वैसे मैं अपने एप्लिकेशन के लिए डोमेन संचालित डिज़ाइन सिद्धांतों को लागू करने की कोशिश कर रहा हूं, एक समृद्ध डोमेन मॉडल जिसमें डेटा फ़ील्ड और व्यावसायिक तर्क दोनों शामिल हैं। मैंने कई डीडीडी किताबें पढ़ी हैं, लेकिन ऐसा लगता है कि उनके डोमेन मॉडल (इकाइयों कहा जाता है) बहुत ही सरल हैं।डोमेन संचालित डिज़ाइन: बहुत से डेटा फ़ील्ड वाले जटिल मॉडल से कैसे निपटें?
class Job extends DomainModel{
protected int id;
protected User employer;
protected string position;
protected string industry;
protected string requirements;
protected string responsibilities;
protected string benefits;
protected int vacancy;
protected Money salary;
protected DateTime datePosted;
protected DateTime dateStarting;
protected Interval duration;
protected String status;
protected float rating;
//business logic below
}
जैसा कि आप देख, इस डोमेन मॉडल डेटा फ़ील्ड का एक बहुत होते हैं, और उन सभी को महत्वपूर्ण हैं: जब मैं इस तरह के नीचे एक के रूप में 10-15 डेटा फ़ील्ड, के साथ एक डोमेन मॉडल है यह एक समस्या बन जाता है और दूर नहीं किया जा सकता है। मुझे पता है कि एक अच्छे समृद्ध डोमेन मॉडल में सेटर विधियों को शामिल नहीं किया जाना चाहिए, बल्कि इसके डेटा को कन्स्ट्रक्टर को पास करना चाहिए, और व्यवसाय तर्क का उपयोग करके राज्यों को बदलना चाहिए। हालांकि, उपरोक्त डोमेन मॉडल के लिए, मैं सबकुछ कन्स्ट्रक्टर को पास नहीं कर सकता, क्योंकि इससे कन्स्ट्रक्टर विधि में 15+ पैरामीटर होंगे। एक विधि में 6-7 से अधिक पैरामीटर नहीं होना चाहिए, आपको नहीं लगता?
तो मैं कई डेटा फ़ील्ड वाले डोमेन मॉडल से निपटने के लिए क्या कर सकता हूं? क्या मुझे इसे विघटित करने की कोशिश करनी चाहिए? यदि हां, तो कैसे? या शायद, मुझे केवल एक बिल्डर क्लास या प्रतिबिंब का उपयोग तत्कालता पर अपनी संपत्तियों को शुरू करने के लिए करना चाहिए, इसलिए मैं इतने सारे तर्कों के साथ कन्स्ट्रक्टर को प्रदूषित नहीं करूंगा? क्या कोई सलाह दे सकता है? धन्यवाद।
मुझे लगता है, हाँ मुझे लगता है कि मुझे अधिक मूल्य वस्तुएं लागू करना शुरू करना चाहिए, जैसे कि मेरे पास पहले से मौजूद मनी वैल्यू ऑब्जेक्ट है। सुझाव के लिए धन्यवाद, मैं डेटा फ़ील्ड को छोटे मान ऑब्जेक्ट्स द्वारा लिखकर शुरू करूंगा, और प्रत्येक इकाई में मूल्य ऑब्जेक्ट्स का उपयोग करूंगा। मुझे पता है कि संरक्षित क्षेत्र कभी-कभी encapsulation तोड़ते हैं, इसलिए मुझे भी ज्यादातर मामलों में निजी पर स्विच करना चाहिए, धन्यवाद। मुझे डोमेन मॉडल बनाम इकाई चीज़ के बारे में निश्चित नहीं है, हालांकि, मेरी समझ के लिए एक डोमेन मॉडल एक इकाई है, या एक इकाई पहचान के साथ एक डोमेन मॉडल है, क्या यह सही है? –
@LordYggdrasill एक डोमेन मॉडल "चीजें" का पूरा सेट है जिसका अर्थ आपके डोमेन में है, उदा। संस्थाओं, मूल्य वस्तुओं, आदि उदाहरण के लिए देखें [यह लेख] (https://en.wikipedia.org/wiki/Domain_model), चित्र एक नमूना डोमेन मॉडल दिखाता है जिसमें कई वर्ग शामिल हैं। – theDmi
मैं देखता हूं, धन्यवाद। कुल रूट के बारे में कुछ लेख पढ़ने के बाद मैं इसे बेहतर समझ गया। –