2013-03-08 8 views
5

मैं जानना चाहता हूं कि डोमेन संचालित डिज़ाइन में कारखानों को कैसे कार्यान्वित किया जाए। (उदाहरण)डीडीडी - कारखानों को कैसे कार्यान्वित करें

कारखानों के इंटरफेस और कार्यान्वयन कहां रखा जाना चाहिए? क्या मुझे डोमेन ऑब्जेक्ट्स के लिए इंटरफेस बनाने की ज़रूरत है जो कारखानों का निर्माण करते हैं? क्या मुझे रिपॉजिटरीज, सेवाओं, ...

पर निर्भर करता हूं कि मैं निर्भरता इंजेक्शन कंटेनर का उपयोग कर रहा हूं, मैं उन्हें कारखानों के साथ कैसे रख सकता हूं?

धन्यवाद।

+2

imho यह प्रश्न गलत तरीके से बंद है क्योंकि डीडीडी में कारखानों के बारे में बात करना सामान्य रूप से कारखानों के बारे में बात करने की तुलना में काफी अच्छी तरह से सीमित है। उन्हें कैसे लागू करना एक अच्छा सवाल है क्योंकि आमतौर पर तीन दृष्टिकोण होते हैं: अलग कारखानों, रिपोजिटरी कारखानों के रूप में कार्य करते हैं या डोमेन इकाइयों को 'नया' देते हैं। – jgauffin

+0

हालांकि, सामान्य रूप से डोमेन इकाइयों के बारे में प्रश्नों में मिश्रण न करें क्योंकि यह आपके प्रश्न को संदिग्ध बनाता है। इसे विशिष्ट रखें या एकाधिक प्रश्न बनाएं। – jgauffin

उत्तर

10

फैक्ट्री सामान्य कक्षाएं, आमतौर पर स्थैतिक होनी चाहिए। उन्हें इकाई या मूल्य वस्तु पर स्थिर विधियों के रूप में भी लागू किया जा सकता है। कारखानों को डोमेन ऑब्जेक्ट्स को सीधे और केवल डोमेन ऑब्जेक्ट बनाना चाहिए। इसके अलावा, कारखानों को निर्भरता इंजेक्शन से बंधे नहीं जाना चाहिए क्योंकि डोमेन ऑब्जेक्ट्स में उन पर निर्भरता नहीं होनी चाहिए।

डोमेन ऑब्जेक्ट्स इंटरफेस को लागू नहीं करना चाहिए - यह एक अनावश्यक अमूर्त है।

दूसरी ओर सेवाओं और भंडार कार्यान्वयन पर निर्भरताएं होती हैं और डी कंटेनर द्वारा बनाई जानी चाहिए।

+2

इंटरफेस वास्तव में एक अनावश्यक अमूर्तता है यदि आप एक डिस्पोजेबल प्रोटोटाइप विकसित करने के लिए अकेले काम करते हैं (कोई विकास अपेक्षित नहीं है और इस प्रकार कोई परीक्षण नहीं है)। अलग-अलग परतों पर काम करने वाले लोगों की एक बड़ी टीम के साथ जटिल डोमेन पर, इंटरफेस डोमेन के परिवर्तनों के बाद रिफैक्टरिंग के प्रभावी समानांतरता की अनुमति देता है। इसके अलावा, इंटरफेस के बिना, एक उचित इकाई परीक्षण बहुत कठिन हो जाता है। –

+2

विशेष रूप से डोमेन ऑब्जेक्ट्स के लिए, इंटरफेस न केवल एक अनावश्यक अमूर्तता है, वे एक हानिकारक अमूर्त हैं। दूसरी ओर सेवाओं या भंडारों के लिए इंटरफेस निश्चित रूप से मूल्यवान हैं। हालांकि, अकेले परीक्षण के लिए इंटरफेस घोषित करना एक अच्छा मॉकिंग फ्रेमवर्क से बचा जा सकता है। आम तौर पर, मैं केवल अमूर्तता की लागत पर प्रकाश डालना चाहता हूं। सबसे पहले, एक अमूर्तता के मूल्य, फिर लागत सीखता है। – eulerfx

+0

मैं इस बात से सहमत हूं कि ज्यादातर मामलों में विशिष्ट डोमेन ऑब्जेक्ट्स को आपके द्वारा उल्लेख किए गए इंटरफ़ेस की आवश्यकता नहीं होगी। लेकिन हमेशा के रूप में यह डोमेन पर निर्भर करता है :) यदि ऐसी सामान्य वस्तुएं हैं जिन्हें आपके डोमेन में इंटरचेंज (रणनीतियों) किया जा सकता है तो यह उपयोगी या आवश्यक भी हो सकता है। लेकिन मुझे लगता है कि यह एक अपवाद होगा। –

संबंधित मुद्दे