यह सवाल लगभग एक साल हो गया है क्योंकि मैंने इस सवाल से पूछा था और तब से और मेरी टीम ने तब से काफी कुछ सीखा है। यहां बताया गया है कि मैं आज इस प्रश्न का उत्तर कैसे दूंगा:
डोमेन को (कोड में) प्रतिनिधित्व करना चाहिए (वास्तविक जीवन में) व्यवसाय क्या है या करता है। डोमेन इकाइयां, फिर, वास्तविक जीवन व्यापार में पाए जाने वाले कलाकृतियों या कलाकार हैं। उन री-लाइफ कलाकृतियों और अभिनेताओं के किस प्रकार का व्यवहार है? यह सब। बदले में, डोमेन संस्थाओं के किस प्रकार के व्यवहार पर उनके पास होना चाहिए? यह सब।
उदाहरण के लिए, वास्तविक जीवन में, एक प्रबंधक एक नया कर्मचारी किराए पर ले सकता है। उस डोमेन के प्रतिनिधित्व में "प्रबंधक" और "नए कर्मचारी" जैसी संस्थाएं शामिल होनी चाहिए। प्रबंधक यहां अभिनेता है।
//newEmployee comes from somewhere else... possibly the UI
//someManagerId comes from the logged in user
var manager = _repository.Get<Manager>(someManagerId);
manager.Hire(newEmployee);
तो, प्रबंधक इकाई मॉडल/यहां वास्तविक जीवन व्यवसाय के व्यवहार को प्रतिबिंबित करता है। एक कमजोर डोमेन में
//newEmployeeService comes from somewhere else... possibly injected using IOC
newEmployeeService.Create(newEmployee, someManagerId);
: विकल्प एक अभिनेता के रूप प्रबंधक इकाई को छोड़ने के लिए, और उसे कोने में धक्का तो एक भारी-उठाने "डोमेन सेवा" सब काम कर सकते हैं ... इस तरह है , आप कर्मचारी बनाने या किराए पर लेने के लिए इस तरह की एक डोमेन सेवा का उपयोग करेंगे। यह काम करता है, लेकिन यह अभिव्यक्तिपूर्ण नहीं है और व्यवहार खोजने योग्य नहीं है। कौन क्या करता है? प्रबंधक को नया कर्मचारी बनाने की आवश्यकता क्यों है?
मैं जब मैं प्रश्न मूल रूप से कहा कि, मैं निर्माता इंजेक्शन के साथ मेरी संस्थाओं में अधिक व्यवहार सहित प्रारंभ करने का प्रयास करने के लिए चाहता था, लेकिन मैं वास्तव में (उदाहरण के लिए मेरी संस्थाओं में सेवाएं इंजेक्शन लगाने के बिना कैसे पता नहीं था, लगता है)। तब से, हमने कुछ नई चाल सीखी हैं और हमारी टीम की संस्थाएं सुपर-अभिव्यक्तिपूर्ण हैं। यहाँ संक्षेप में, है, हम क्या कर रहे हैं:
- हम जब संभव हो, उपयोग अभिनेता संस्थाओं व्यक्ति या बात यह है कि कार्रवाई प्रदर्शन कर रहा है व्यक्त करने के लिए प्रयास करें।
- अभिनेताओं के पास ऐसे तरीके हैं जो वे कर सकते हैं जो वे कर सकते हैं
- जब किसी सेवा की आवश्यकता होती है, तो इसे विधि में एक तर्क के रूप में इंजेक्शन दिया जाता है जहां इसका उपयोग किया जाता है।
- हम प्रत्येक डोमेन इकाई पर हर विधि पर BlingBag का उपयोग करके डोमेन घटनाओं को फायर कर सकते हैं ताकि एक्स्टेंसिबिलिटी प्रदान की जा सके और संस्थाओं को स्वयं को बनाए रखने की क्षमता मिल सके।
स्रोत
2012-08-28 20:40:50
एकल जिम्मेदारी डोमेन संचालित डिज़ाइन के लिए काफी विरोधी है। हमने कुछ महीने पहले NYCDDD बैठक में इस बारे में एक दिलचस्प चर्चा की थी ... – Domenic
मुझे उस चर्चा में रूचि होगी। मुझे यह नहीं लगता कि –