क्या कोई मुझे वर्ग विरासत के विरोध में किसी अन्य वर्ग के कन्स्ट्रक्टर इंजेक्शन का उपयोग करके सजावटी कक्षाओं के निर्माण के बीच अंतर (जैसे लाभ) के माध्यम से चल सकता है? उदाहरणों में मैं सोच सकता हूं, मैं एक ही अंत लक्ष्य को दो तरीकों से पूरा कर सकता हूं लेकिन मुझे संदेह है कि मुझे कुछ मौलिक याद आ रही है।कन्स्ट्रक्टर इंजेक्शन बनाम सरल विरासत के माध्यम से सजावट
उत्तर
सजावटी पैटर्न एक ऑब्जेक्ट लिखने से संबंधित है। उस वस्तु के प्रकार को प्राप्त करने में सक्षम होने के लिए, यह स्पष्ट रूप से विरासत योग्य होना चाहिए। विरासत के लिए सभी प्रकारों को डिज़ाइन नहीं किया गया है, यानी, मूल वर्ग होने के लिए, भले ही वे पूरी तरह तकनीकी दृष्टि से विरासत में प्राप्त हो जाएं (जिसे मैं एक डिज़ाइन दोष मानता हूं)।
सजावटी पैटर्न के लिए राइस डी'एट्रे ऑब्जेक्ट्स के व्यवहार को संशोधित किए बिना वस्तुओं के व्यवहार को संशोधित करने में सक्षम होना है। विरासत में, आप अनिवार्य रूप से ऑब्जेक्ट को संशोधित कर रहे हैं और जो भी आप प्राप्त करते हैं वह नियमित रूप से बहुरूपता के माध्यम से परिवर्तन होता है, जिसका अर्थ है कि आप एक ही चीज़ को पूरा नहीं करते हैं।
तो, दोनों सजावट और विरासत में उनके उपयोग हैं। सजावट का प्रयोग करें जब इनमें से किसी को भी सच है
- (यदि वर्ग सी # में
sealed
है उदाहरण के लिए) आप के वारिस नहीं कर सकते हैं - आप वारिस नहीं चाहिए (वर्ग स्पष्ट रूप से एक आधार वर्ग होना नहीं है)
- आप (अलग व्यवहार की सज्जाकार के साथ रैप करके) एक विशेष वस्तु कई बार के व्यवहार को बदलने के
ध्यान दें कि विरासत सबसे शक्तिशाली उपकरण वहाँ OO पिटारे में है चाहता हूँ। महान शक्ति के साथ बड़ी ज़िम्मेदारी आती है और इसका सामना करना हमेशा आसान नहीं होता है। मैं कहूंगा: हमेशा लिखें या समेकित करें। जब वह सिर्फ नहीं किया जा सकता है, वारिस। आप के वारिस नहीं कर सकते हैं, रचना या कुल करने के लिए कड़ी मेहनत करनी "
मैं इस प्रकार फिर से शुरू होगा:।?
जब आप वारिस चाहिए
वस्तुओं एक ही अर्थ पदानुक्रम से कर रहे हैं और प्रतिनिधित्व एक है-एक संबंध।
कि क्या करता है मतलब है?
यह एक Cat
है-एकFeline
, वास्तव में एक Feline
है-एकVertebrate
, और इतने पर।
आपको कब सजाया जाना चाहिए?
जब ऑब्जेक्ट का प्रतिनिधित्व नहीं करते हैं तो संबंध है। लेकिन, हाँ, Coffee
और Milk
दोनों एक ही पदानुक्रम पर हो सकते हैं। लेकिन अगर आप were to sell Cappuccino
आप यह नहीं कहेंगे कि एक कॉफी है- दूध, इसके बजाय आप इसे Milk
से सजाने के लिए तैयार करेंगे।
निष्कर्ष:
Is-a से has-a अलग है। एक उप प्रकार है, दूसरा का एक संयोजन है।
लेकिन, इस देखें: https://stackoverflow.com/questions/1621344/head-first-design-patterns-decorator-pattern
एक वास्तविक दुनिया उदाहरण आदेश एसीएल के चेक करने के लिए आपके नियंत्रकों या सेवाओं के लिए एक security container as a Decorator बनाने के लिए किया जाएगा।
सजाने के लिए एक और वास्तव में अच्छा कारण यह है कि यह आपको कक्षा के बजाय इंटरफेस को सजाने का विकल्प देता है। फिर आप काफी कम हो जाते हैं, और अधिक कोड लिखने के बिना इंटरफेस के कई कार्यान्वयन के लिए ऑर्थोगोनल सजावट व्यवहार जोड़ सकते हैं।
- 1. सजावट डिजाइन पैटर्न बनाम विरासत?
- 2. पायथन सजावट और कक्षा विरासत
- 3. निर्भरता इंजेक्शन/विरासत डिजाइन पैटर्न
- 4. एमईएफ कन्स्ट्रक्टर इंजेक्शन
- 5. कन्स्ट्रक्टर इंजेक्शन - कहां कॉल करें?
- 6. एकता [निर्भरता] इंजेक्शन और विरासत
- 7. सर्वलेट 3.0 के साथ कन्स्ट्रक्टर निर्भरता इंजेक्शन?
- 8. विरासत के माध्यम से Hibernate @Id
- 9. रेजोज़िबिलिटी बनाम सजावट के डिजाइन पैटर्न चेन सजावट
- 10. कन्स्ट्रक्टर पैरामीटर्स और विरासत
- 11. कॉपी-कन्स्ट्रक्टर विरासत
- 12. क्या मुझे अपनी कक्षाओं में कन्स्ट्रक्टर इंजेक्शन के माध्यम से ठोस वर्ग निर्भरता स्पष्ट करनी चाहिए?
- 13. कन्स्ट्रक्टर इंजेक्शन के बजाय प्रॉपर्टी इंजेक्शन का उपयोग
- 14. सी # कन्स्ट्रक्टर और निर्भरता इंजेक्शन
- 15. गिइस इंजेक्शन केवल कुछ कन्स्ट्रक्टर
- 16. सी #/एकता में कन्स्ट्रक्टर इंजेक्शन?
- 17. कक्षा सजावट, विरासत, सुपर(), और अधिकतम रिकर्सन
- 18. सरल जावास्क्रिप्ट विरासत में सुधार
- 19. पाइथन मेटाक्लास बनाम कक्षा सजावट
- 20. वर्चुअल विरासत में कन्स्ट्रक्टर ऑर्डर
- 21. जावा कॉपी कन्स्ट्रक्टर और विरासत
- 22. जावा विरासत बनाम सी # विरासत
- 23. जावास्क्रिप्ट विरासत और कन्स्ट्रक्टर संपत्ति
- 24. इंजेक्शन बनाम प्रबंधित Property
- 25. EntityManager बनाम इंजेक्शन। EntityManagerFactory
- 26. सेवा लोकेटर बनाम निर्भरता इंजेक्शन
- 27. subclassing के माध्यम से एक नामांकित के कन्स्ट्रक्टर तर्क संशोधित?
- 28. डिफ़ॉल्ट कन्स्ट्रक्टर बनाम आईओसी कंटेनर
- 29. गतिशील LINQ के माध्यम से इंजेक्शन संभव है?
- 30. सरल टेम्पलेट विरासत समस्या सी ++
अद्भुत स्पष्टीकरण! – goldfinger