DDD: अपरिवर्तनीय वस्तुएं भी हो सकती हैं?


9

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

क्या आप इस बात से सहमत हैं कि यदि किसी वस्तु की स्थिति विशेष डोमेन मॉडल के भीतर कभी नहीं बदलेगी, तो यह वस्तु कभी एक इकाई नहीं होनी चाहिए? क्यों?


मुझे कुछ डीडीडी सीखने को मिले हैं, ताकि मैं इनमें से कुछ सवालों का समझदारी से जवाब दे सकूं। मुझे संदेह है कि कई सॉफ्टवेयर डेवलपर्स को सरल अवधारणाओं के साथ कठिनाई होती है जैसे कि यह गलत धारणा से उत्पन्न होती है कि डीडीडी एक प्रोग्रामिंग पद्धति है।
रॉबर्ट हार्वे

जवाबों:


4

पुस्तक (इवांस, 2004) के अनुसार, "मुख्य रूप से इसकी पहचान द्वारा परिभाषित एक वस्तु को एक ईएनटीटी कहा जाता है"। यह परिभाषा स्वतंत्र है कि क्या वस्तु परस्पर या अपरिवर्तनीय है। मुझे लगता है कि किसी दिए गए डोमेन में एक अपरिवर्तनीय वस्तु के लिए एक इकाई होने की संभावना बहुत कम है , इसलिए यह तय करने के लिए एक उपयोगी उत्तराधिकार है कि क्या कोई वस्तु "मूल्य वस्तु" या "इकाई" है, लेकिन यह परिभाषा का हिस्सा नहीं है।

उदाहरण के लिए, मान लें कि आपके पास एक कर्मचारी का प्रतिनिधित्व करने वाली इकाई है, जिसके पास प्रत्यक्ष पर्यवेक्षक हो सकता है या नहीं हो सकता है। यदि आप एक "अशक्त" पर्यवेक्षक वस्तु के संदर्भ के रूप में प्रत्यक्ष पर्यवेक्षक नहीं होने के विचार का प्रतिनिधित्व करने का निर्णय लेते हैं, तो "अशक्त" पर्यवेक्षक वस्तु को एक इकाई माना जाता है। और आप शायद इस "अशक्त" वस्तु को अपरिवर्तनीय बना सकते हैं।


1
+1 प्रबंधक किसी विशेष संदर्भ या उप-डोमेन में केवल (अपरिवर्तनीय) पढ़ा जा सकता है, लेकिन इसका मतलब यह नहीं है कि इसकी कोई पहचान नहीं है।
एड्रियन श्नाइडर

मुझे घने होने के लिए क्षमा करें, लेकिन मैं आपके पर्यवेक्षक उदाहरण को पूरी तरह से नहीं समझता। क्या आप कह रहे हैं कि डोमेन में हमारे पास दो पर्यवेक्षक से संबंधित अवधारणाएँ होंगी? एक अवधारणा पर्यवेक्षकों का प्रतिनिधित्व करेगी, जिनके पास वे कर्मचारी हैं जिनकी देखरेख करते हैं (कोड में इस अवधारणा को परस्पर पर्यवेक्षक वर्ग के रूप में लागू किया जाएगा) जबकि दूसरी अवधारणा पर्यवेक्षक का वर्णन करेगी जो किसी भी कर्मचारी की निगरानी नहीं करते हैं (और यह अवधारणा कोड में शून्य के रूप में लागू की जाएगी) ?
bckpwrld

@bckpwrld नहीं, वह निश्चित रूप से एक अशक्त वस्तु का मतलब है ।
मातरिनस

2

जिस तरह से मैंने इसे पढ़ा है, वह यह है कि एक वैल्यू ऑब्जेक्ट एक ऐसी वस्तु है, जिसकी खुद के लिए कोई पहचान नहीं है और इसका राज्य बदलने या न बदलने से कोई लेना-देना नहीं है। यह एक इकाई और एक मूल्य वस्तु के बीच का अंतर बनाता है कि एक इकाई में एक प्राथमिक कुंजी होती है, जबकि एक मूल्य वस्तु नहीं होती है; यह उस इकाई के लिए एक विदेशी कुंजी होगी जो इसके अंतर्गत आती है।

http://lostechies.com/joeocampo/2007/04/23/a-discussion-on-domain-driven-design-value-objects/

मैं अभी भी मूल्य ऑब्जेक्ट के गुणों को बदल सकता हूं, लेकिन इसे कभी भी इकाई से स्वतंत्र पहचाने जाने की आवश्यकता नहीं है।


मैं एक रूपक के रूप में पहचान के रूप में संबंधपरक डेटाबेस (प्राथमिक कुंजी) से शब्दावली में मिलाया, कृपया इसे शाब्दिक रूप से नहीं लेते हैं
केविन

मेरी समझ में कम से कम, भले ही कोड VOs को एक परिवर्तनशील प्रकार के साथ दर्शाया जाता है (इस प्रकार इस प्रकार के उदाहरणों में उनके गुण संशोधित हो सकते हैं), अवधारणात्मक रूप से ये VO अभी भी अपरिवर्तनीय हैं। इस प्रकार, किसी विशेष VO का प्रतिनिधित्व करने वाले उदाहरण की संपत्ति को बदलने का मतलब है कि अब यह वही उदाहरण एक अलग VO का प्रतिनिधित्व करता है। दूसरे शब्दों में,
VO परिकल्पित
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.