मैं खून की कमी डोमेन मॉडल को समझने के लिए कोशिश कर रहा हूँ और क्यों वे माना जाता है कि एक विरोधी पैटर्न हैं।बचना कमजोर डोमेन मॉडल - एक असली उदाहरण
यहां एक असली दुनिया का उदाहरण है। नाम, लिंग, उपयोगकर्ता नाम, आदि
public class Employee
{
public string Name { get; set; }
public string Gender { get; set; }
public string Username { get; set; }
// Etc.. mostly getters and setters
}
अगला हम एक प्रणाली है कि आने वाली फोन कॉल और वेबसाइट पूछताछ ('सुराग के रूप में जाना घूर्णन शामिल है -
मैं एक कर्मचारी वर्ग है, जो गुणों की एक टन है है ') बिक्री कर्मचारियों के बीच समान रूप से। यह प्रणाली काफी जटिल है क्योंकि इसमें राउंड-रॉबिनिंग पूछताछ, छुट्टियों की जांच, कर्मचारी वरीयता आदि शामिल हैं। इसलिए यह प्रणाली वर्तमान में एक सेवा में अलग हो गई है: कर्मचारी LeadRotationService।
public void SubmitForm()
{
var lead = CreateLeadFromFormInput();
var selectedEmployee = Kernel.Get<IEmployeeLeadRotationService>()
.SelectEmployee(lead);
Response.Write(employee.Name + " will handle your enquiry. Thanks.");
}
मैं वास्तव में इस दृष्टिकोण के साथ कई समस्याओं का सामना करना नहीं है, लेकिन माना जाता है कि यह कुछ है कि मैं चलाना चाहिए है:
public class EmployeeLeadRotationService : IEmployeeLeadRotationService
{
private IEmployeeRepository _employeeRepository;
// ...plus lots of other injected repositories and services
public void SelectEmployee(ILead lead)
{
// Etc. lots of complex logic
}
}
फिर हमारी वेबसाइट जांच प्रपत्र के पीछे पर हम इस तरह कोड है से चिल्लाना क्योंकि यह एनीमिक डोमेन मॉडल है।
लेकिन मेरे लिए इसकी स्पष्ट नहीं है जहां नेतृत्व रोटेशन सेवा में तर्क जाना चाहिए। क्या इसे लीड में जाना चाहिए? क्या यह कर्मचारी में जाना चाहिए?
रोटेशन सेवा के लिए सभी इंजेक्शन रिपॉजिटरीज आदि के बारे में क्या है - उन्हें कर्मचारी में इंजेक्शन कैसे दिया जाएगा, बशर्ते कि किसी कर्मचारी से निपटने के दौरान हमें इनमें से किसी भी भंडार की आवश्यकता नहीं है?
+1 बड़ा सवाल! – mdma
तो 'ILead' जैसा दिखता है, अगर यह स्पष्ट नहीं है। इसमें चयन करें कर्मचारी?) –
वैसे इस मामले में लीड एक वेब पूछताछ है, इसलिए इसमें एक टिप्पणी संपत्ति होगी। लेकिन हमारे पास फोन पूछताछ, एप्लिकेशन, उद्धरण इत्यादि भी हैं जो सभी अलग हैं। आईएलएड इंटरफ़ेस में स्थानऑफलेड, टाइमऑफलेड इत्यादि जैसे गुण होंगे – cbp