ठीक है, इसलिए हमारे पास घर में एक उपयोगिता है जो हमारे डेटाबेस टेबल और विचारों से व्यापार-मॉडल कक्षाएं उत्पन्न करती है, जैसे ओआरएम (लेकिन बिल्कुल बिल्कुल नहीं)। इसे बनाए रखने में, यह मेरे लिए हुआ कि स्कीमा में डेटा पूरी तरह से बदलने की संभावना नहीं है। कार्यक्षमता, हालांकि, हो सकता है। हम सड़क के नीचे अतिरिक्त कार्यक्षमता जोड़ना चाह सकते हैं। हम उस कार्यक्षमता में से कुछ उत्पन्न करना चाहते हैं, और हम इसे विस्तारित करना चाहते हैं।.NET आंशिक वर्ग बनाम विरासत
हमारे द्वारा निर्मित कक्षाएं अन्य पुस्तकालयों और अनुप्रयोगों द्वारा खपत के लिए कक्षा पुस्तकालय में रहेंगी। वहां कोई बड़ा आश्चर्य नहीं है। लेकिन यहां स्टंपर जेनरेटेड क्लास को इस तरह से डिजाइन करने का तरीका है कि जब हम कक्षा को पुन: उत्पन्न करते हैं तो हम जितना संभव हो उतना छोटा कोड बाधित करते हैं। यदि, उदाहरण के लिए, किसी संपत्ति में कोड जोड़ा गया है (जो डेटाबेस तालिका में कॉलम का प्रतिनिधित्व करता है), तो हम इसे खोना नहीं चाहते हैं।
क्लासिक विरासत, जहां पूरे बात एक एकल, "अखंड" वर्ग में किया जाता है और उपभोक्ताओं के आधार कार्यान्वयन ओवरराइड करने के लिए स्वतंत्र हैं:
तो, वहाँ दो दृष्टिकोण जो मन में छलांग है। यह समय-समय पर मुश्किल हो जाता है, हालांकि, और अक्सर कास्टिंग सिरदर्द पेश करता है। इसके अलावा, यदि व्युत्पन्न वर्ग सावधान नहीं है और बेस क्लास कार्यक्षमता का आह्वान करना भूल जाता है, तो चीजें जल्दी से घबरा सकती हैं।
आंशिक कक्षा। इस योजना में, हम व्यापार वस्तु को अलग-अलग हिस्सों में अलग करते हैं: गुण (जो स्तंभों के लिए मानचित्र), और व्यवहार। व्यवहार भी उत्पन्न व्यवहार और कस्टम व्यवहार में आगे तोड़ दिया जा सकता है। इस दृष्टिकोण के साथ समस्या, जैसा कि आप देख सकते हैं, इसकी अंतर्निहित जटिलता है। इसके अलावा, नामकरण समस्या है।
यहां आपके लिए मेरा प्रश्न है: जब आप इस तरह के परिदृश्य से निपट रहे हैं (यदि आपके पास कभी है), या यदि आपको इस तरह के परिदृश्य के साथ प्रस्तुत किया गया था, तो आप किन समाधानों पर विचार करेंगे, और क्यों?
नामकरण समस्या पर टिप्पणी करने के लिए - कोड जनरेशन टूल के साथ मेरा अनुभव यह है कि वे आमतौर पर केवल आपके सभी वर्गों के साथ एक बड़ी फ़ाइल उत्पन्न करते हैं। इससे आप अपने कस्टम कोड को क्लास फाइलों में डाल सकते हैं जिन्हें आपकी कक्षा के नाम पर रखा गया है, और आम तौर पर हम इसे और अधिक अपमानजनक बनाने के लिए हेडर पर टिप्पणी करते हैं कि कहीं और जेनरेट कोड होता है। – womp
मैं इस दृष्टिकोण से असहमत हूं। दीर्घकालिक डेवलपर्स दो अलग-अलग फाइलों में कोड बनाए रखेंगे और अल्पकालिक डेवलपर्स को उनके नियंत्रण के बाहर परिवर्तनों के अधीन किया जाएगा (यदि आप एक विशिष्ट कार्यक्रम में मनोरंजन को सीमित करेंगे तो सहायक होगा)। सौभाग्य। – eschneider