আমি আজকাল ডিডিডি নিয়ে অধ্যয়ন করছি এবং ডিডিডি দিয়ে কীভাবে সংগ্রহস্থল পরিচালনা করবেন সে সম্পর্কে আমার কিছু প্রশ্ন রয়েছে।
আসলে, আমি দুটি সম্ভাব্য ব্যক্তির সাথে দেখা করেছি:
প্রথমটি
আমি যে পরিষেবাগুলি পড়েছি তা পরিচালনা করার প্রথম উপায় হ'ল একটি অ্যাপ্লিকেশন পরিষেবাতে একটি সংগ্রহস্থল এবং একটি ডোমেন মডেল ইনজেকশন করা।
এইভাবে, অ্যাপ্লিকেশন পরিষেবা পদ্ধতির একটিতে, আমরা একটি ডোমেন পরিষেবা পদ্ধতি (ব্যবসার বিধিগুলি পরীক্ষা করে) কল করি এবং শর্তটি ভাল হলে, ডাটাবেস থেকে সত্তাকে অবিচল / পুনরুদ্ধার করার জন্য একটি বিশেষ পদ্ধতিতে সংগ্রহস্থলকে ডাকা হয়।
এটি করার একটি সহজ উপায় হ'ল:
class ApplicationService{
constructor(domainService, repository){
this.domainService = domainService
this.repository = repository
}
postAction(data){
if(this.domainService.validateRules(data)){
this.repository.persist(new Entity(data.name, data.surname))
}
// ...
}
}
দ্বিতীয়
দ্বিতীয় সম্ভাবনাটি হ'ল পরিবর্তে ডোমেন সার্ভিসের অভ্যন্তরে সংগ্রহস্থল ইনজেকশন করা এবং কেবলমাত্র ডোমেন পরিষেবাদির মাধ্যমে সংগ্রহস্থল ব্যবহার করা:
class ApplicationService{
constructor(domainService){
this.domainService = domainService
}
postAction(data){
if(this.domainService.persist(data)){
console.log('all is good')
}
// ...
}
}
class DomainService{
constructor(repository){
this.repository = repository
}
persist(data){
if(this.validateRules(data)){
this.repository.save(new Entity(data.name))
}
}
validateRules(data){
// returns a rule matching
}
}
এখন থেকে, আমি কোনটি সেরা (কোনও যদি সেরা থাকে) বা তারা উভয়কেই তাদের প্রসঙ্গে বোঝায় তা পার্থক্য করতে পারছি না।
আপনি কি আমাকে উদাহরণ প্রদান করতে পারেন যেখানে একজনের চেয়ে অপরটির চেয়ে ভাল হতে পারে এবং কেন?