क्या एकाधिक उत्तराधिकार उन सभी समस्याओं को हल नहीं करते हैं जो इकाई सिस्टम करते हैं?


10

यह प्रश्न बहुत ही स्पष्ट है कि: क्या एकाधिक उत्तराधिकार उन सभी समस्याओं को हल नहीं करते हैं जो इकाई प्रणाली भी हल करती हैं?

मुझे बस "मल्टीपल इनहेरिटेंस" नामक एक शब्द याद था, और यह बहुत सी ब्लोटिंग समस्याओं को हल करने के लिए लगता है जो कि शास्त्रीय विरासत को थोपा गया था।


1
एकाधिक विरासत इकाई प्रणालियों के समान है, लेकिन यह समान नहीं है। उदाहरण के लिए, एकाधिक विरासत संस्थाओं में रन-टाइम पर जोड़े गए और हटाए गए घटक नहीं हो सकते हैं। सभी भाषाएँ एकाधिक वंशानुक्रम का भी समर्थन नहीं करती हैं। आप रचना को एक ही श्रेणी बनाम इकाई / घटकों में रखने पर भी विचार कर सकते हैं।
MichaelHouse

2
यदि आपकी कक्षाएं पहले से ही साफ-सुथरी हैं, तो आप उन्हें किसी भी तरह से एक साथ विरासत में दे सकते हैं, वे पहले से ही घटक हो सकते हैं। घटक रनटाइम पर रचना / एकत्रीकरण की अनुमति भी देते हैं

ठीक है, इसकी अधिक जटिल और कम त्रुटि की संभावना है, तो इसे क्यों पसंद करते हैं?
एपीआई-जानवर

2
एमआई वास्तव में "ब्लोट" मुद्दों को संबोधित नहीं करता है, क्योंकि एक मूल वर्ग या वर्गों से इंटरफ़ेस की अधिकता विरासत में एकल बनाम एकाधिक विरासत के बजाय एक विरासत तंत्र का उपयोग करके खराब होने का एक लक्षण है। एक ही "ब्लोट" एक रचना-उन्मुख दृष्टिकोण में एक समस्या के लिए, साथ ही साथ प्राप्त किया जा सकता है।

@MrBeast का मतलब है आप अधिक जटिल / अधिक त्रुटि प्रवण, कम जटिल / त्रुटि प्रवण, या "इसे पसंद क्यों नहीं करते?"
डीएवी

जवाबों:


10

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

परंपरागत रूप से, घटक-केंद्रित इकाई प्रणाली को किसी भी रूप में भारी विरासत से दूर जाने की इच्छा के कारण विकसित किया जाता है, रचना के बजाय लक्ष्य । इस कहावत पर पर्याप्त साहित्य और चर्चा कहीं और है, उदाहरण के लिए प्रोग्रामर एसई या एसओ पर , और यह इस बात का बड़ा सवाल है कि रचना को क्यों पसंद किया जाए , यह गेम के विकास के लिए ऑफ-टॉपिक है। संक्षेप में, हालांकि, यह एक ऐसा दृष्टिकोण है जो खुद को बेहतर सुधार और स्थिरता के लिए उधार देता है।


2

जोश का जवाब बहुत बढ़िया है, लेकिन मैं जोड़ना चाहूंगा:

इकाई / घटक की सबसे अच्छी विशेषताओं में से एक डेटा-चालित तरीका है जिसमें आपके खेल की हर "चीज़" बनाई और प्रबंधित की जाती है। मैंने जो कुछ भी देखा है, उसमें से एक बार आपके पास घटक प्रकार और प्रणालियों का एक अच्छा पुस्तकालय है, तो आप न्यूनतम कोड संशोधनों के साथ कुछ भी बना सकते हैं। (नोट: न्यूनतम! = 0 )

व्यवहार के संदर्भ में अपने खेल को परिभाषित करके, और अपने आप को मक्खी पर उन व्यवहारों को संशोधित करने की क्षमता प्रदान करते हैं - रनटाइम के दौरान, उन्हें स्क्रिप्ट या डेटाबेस से लोड करने के लिए प्रारंभ करने के दौरान, आदि - आप नई संभावनाओं की एक पूरी दुनिया खोलते हैं। यह देखना चाहते हैं कि आपकी छाया वहां क्यों नहीं उतरेगी जहां आप उम्मीद करेंगे? अपने प्रकाश में एक कैमरा / पीओवी घटक जोड़ें।

इकाई / घटक से आप अपनी इच्छानुसार कुछ भी बना सकते हैं, जब तक आपने ब्लॉक बनाए हैं।

इसके अलावा, एकाधिक वंशानुक्रम एकल विरासत के समान समस्या का कारण बनता है। जब आप पदानुक्रम में एक विशेषता या व्यवहार जोड़ते हैं, तो यह प्रचारित करता है। जब तक आप गहरी पदानुक्रम बना रहे हैं, तब तक आप उन परिस्थितियों में भाग लेंगे जहाँ आप अनावश्यक भार उठा रहे हैं, कोड डुप्लिकेट कर रहे हैं, या विरोधों को हल कर रहे हैं। जब आप अपने खेल को डेटा के रूप में कल्पना करते हैं, तो इससे बचा जा सकता है।

मैंने पिछले कुछ हफ्तों में इसके साथ खेलना शुरू किया है, लेकिन मैं इस बात से प्रभावित हूं कि साधारण चीजें कैसे बन गई हैं। यह एक चांदी की गोली नहीं है - मैंने कुछ मामलों में चलाया है जहां एक लैम्बडा को एक घटक के साथ संलग्न करना एक समस्या को हल करने का सबसे साफ और सबसे तेज तरीका था - लेकिन यह एक बहुत अच्छा पैटर्न है, अगर आप इसे कॉल कर सकते हैं।

थोड़ा संबंधित नोट पर: डेटा-केंद्रित अनुप्रयोगों (वेबसाइटों, आदि) में बड़े, उबाऊ रखरखाव जनरेटर में से एक रिलेशनल डेटाबेस में पदानुक्रमित वस्तुओं का मानचित्रण कर रहा है। हम चारों ओर बहुत सारे निफ्टी समाधान प्राप्त कर चुके हैं, लेकिन वे अंततः सभी हैक को पदानुक्रम को समतल करने के लिए डिज़ाइन किए गए हैं। अपने मॉडल के निर्माण के बजाय ताकि यह एप्लिकेशन के उद्देश्य को पूरा करे, आप एक प्रभावी पदानुक्रम और एक तार्किक तर्कसंगत प्रतिनिधित्व के बीच समझौता करते हैं। मैं अपने ऐप में एक इकाई / घटक प्रणाली के रूप में एक बहुत बड़ी पदानुक्रम के पुनर्निर्माण के विचार के साथ कर रहा हूँ - पदानुक्रम को खोदो और बाकी कार्यान्वयन के लिए डेटाबेस को गोल्ड स्टैंडर्ड बनाओ - और यह आशाजनक है।

जब आप गतिशील कोड जनरेशन / कोड कैशिंग जैसी क्षमताओं को एकीकृत करते हैं जो प्रदर्शन के मुद्दों को संबोधित कर सकते हैं, तो आप एक तेज, लचीली, तार्किक वास्तुकला के साथ हवा देते हैं जो कि ओओपी के पुन: प्रयोज्य कोड लक्ष्य को बहुत बेहतर तरीके से महसूस कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.