मुझे लगता है कि यह व्यक्तिपरक है और आपके डिजाइन पर निर्भर करता है।
ज्यादातर हालांकि यह एक ऐसा डिजाइन प्रतीत होता है जो एक सक्रिय रिकॉर्ड से आता है । एक सक्रिय रिकॉर्ड में आपकी इकाई के पास डेटाबेस संचालन करने के तरीके हैं और इसलिए यह भी जानना चाहिए कि यह डेटाबेस पहचानकर्ता है।
जब इस डेटा को ऑब्जेक्ट में स्टोर करने वाले डेटा मैपर के साथ एक रिपॉजिटरी जैसे अन्य पैटर्न का उपयोग अनावश्यक और शायद अनुचित हो जाता है।
उदाहरण के लिए एक Person
वस्तु लें । मुझे एक नाम दिया गया है जो एक परिवार के भीतर अद्वितीय हो सकता है या नहीं भी हो सकता है। जैसे-जैसे आबादी बढ़ी है बड़े नाम अब अद्वितीय नहीं हैं और इसलिए हम तेजी से बड़ी प्रणाली के लिए सरोगेट पहचानकर्ताओं के साथ आए हैं। इसके उदाहरणों में शामिल हैं: मेरे ड्राइवर लाइसेंस, और सामाजिक सुरक्षा संख्या। मुझे एक आईडी नहीं दी गई है, इन सभी आईडी के लिए आवेदन करना होगा।
इनमें से अधिकांश सॉफ्टवेयर के लिए अच्छी प्राथमिक कुंजी / आईडी नहीं बनाते हैं, क्योंकि वे सार्वभौमिक नहीं हैं। कम से कम उनकी विशिष्ट प्रणाली के बाहर नहीं, जाहिर है कि एसएसएन सामाजिक सुरक्षा प्रशासन के लिए अद्वितीय और सुसंगत है। चूँकि हम आम तौर पर इस जानकारी के प्रदाता नहीं होते हैं, इसलिए आप उन्हें एक id
नहीं बल्कि वह डेटा कहेंगे जो वे प्रतिनिधित्व करते हैं, उदा SSN
। कभी-कभी यहां तक कि पूरी तरह से बनाई गई वस्तु भी शामिल होती है, DriversLicense
जिसमें चालक के लाइसेंस की जानकारी होती है।
सभी सामान्य आईडी इस प्रकार सिस्टम में सरोगेट कीज हैं, और मेमोरी रेफरेंस के साथ बदली जा सकती हैं, जिसमें केवल आईडी को देखना और रिकॉर्ड को आसान बनाना है।
चूँकि id
a वैचारिक डेटा का एक टुकड़ा नहीं है, मुझे संदेह है कि यह (आम तौर पर) ऑब्जेक्ट के भीतर है, क्योंकि यह डोमेन से नहीं आता है। बल्कि इसे अपने उद्देश्य के लिए बनाए रखा जाना चाहिए जो एक ऐसी वस्तु की पहचान करना है जिसके पास अद्वितीय पहचान का प्रतिनिधित्व करने का कोई अन्य तरीका नहीं है। यह आसान के साथ एक संग्रह / संग्रह में किया जा सकता है।
सॉफ़्टवेयर में यदि आपको किसी सूची के रूप में ऑब्जेक्ट का प्रतिनिधित्व करने की आवश्यकता है, या इसे बनाए रखना है, तो आप बस रिपॉजिटरी / संग्रह ऑब्जेक्ट, या उस से जुड़े किसी अन्य ऑब्जेक्ट से ऐसा कर सकते हैं। डेटा मैपर (यदि यह अलग है) पर गुजरते समय, आप बस पास कर सकते हैं .update( id, obj )
।
अस्वीकरण : मैंने अभी तक एक ऐसी प्रणाली बनाने की कोशिश नहीं की है जिसमें इकाई के भीतर आईडी शामिल नहीं है और इस तरह खुद को गलत साबित कर सकता है।