मैं डोमेन मॉडल, पीओसीओ और डीडीडी के लिए नया हूं, इसलिए मैं अभी भी कुछ विचारों के आसपास अपना सिर लेने की कोशिश कर रहा हूं।डोमेन मॉडल और पीओसीओ कक्षाओं के साथ काम करते समय, प्रश्न कहां जाते हैं?
उन चीजों में से एक जो मैं अभी तक नहीं समझ पाया था, यह है कि मेरे डोमेन मॉडल को सरल और भंडारण-अज्ञेयवादी कैसे बनाए रखना है, लेकिन फिर भी एक समृद्ध तरीके से अपने डेटा पर कुछ प्रश्न करने में सक्षम है।
उदाहरण के लिए, मान लीजिए कि मेरे पास एक इकाई ऑर्डर है जिसमें OrdemItems का संग्रह है। मैं सबसे सस्ता ऑर्डर आइटम प्राप्त करना चाहता हूं, किसी भी कारण से, या शायद ऑर्डर आइटमों की एक सूची जो स्टॉक में नहीं हैं। मैं जो नहीं करना चाहता हूं वह सभी ऑर्डर आइटम्स को स्टोरेज से पुनर्प्राप्त करना और बाद में फ़िल्टर करना (बहुत महंगा) है, इसलिए मैं किसी भी तरह से "SELECT .. ITEM.INSTOCK = FALSE" प्रकार के डीबी क्वेरी को समाप्त करना चाहता हूं। मैं अपनी इकाई में एसक्यूएल क्वेरी नहीं चाहता हूं, या अगर कोई मुझे विशिष्ट प्लेटफॉर्म में जोड़ देगा, जैसे LINQ2SQL पर NHibernate क्वेरी। उस मामले में आम समाधान क्या है?
क्या आपके पास ऑर्डर क्लास में इंजेक्शन दिया गया था (ऑर्डर कन्स्ट्रक्टर के हिस्से के रूप में IOrderRepository वाली कुछ पंक्ति), या क्या आपके पास यह बाहर होगा? यदि हां, तो ऑर्डर क्लास में आपके पास क्या होगा? मुझे यकीन नहीं है कि स्टॉक आइटम से बाहर क्या है, ज्ञान/बिज़ नियम –
जाता है आप किसी भी डोमेन ऑब्जेक्ट को रिपोजिटरी पास करना चाहते हैं जिसके लिए ऑर्डर की आवश्यकता होती है। मुझे नहीं लगता कि यह प्रत्येक ऑर्डर इंस्टेंस के मूल के अपने रिपोजिटरी के संदर्भ में बहुत अधिक समझ में आता है। – Morendil
@Morendil I आधा सहमत है: किसी ऑर्डर को इसके भंडार के बारे में कुछ भी नहीं पता होना चाहिए, लेकिन उस * से * डोमेन ऑब्जेक्ट को * किसी भी * भंडार के बारे में पता होना चाहिए। यदि DomainObjectA को DomainObjectB का एक उदाहरण चाहिए, तो कुछ उच्च स्तरीय समन्वयक को अपने भंडारों से बात करनी चाहिए और चीज़ों को हुक करना चाहिए। –