2012-01-30 16 views
23

कम्पोजिट मैं डिजाइन पैटर्न पर एक कोर्स पूरा कर रहा हूँ, और मैं सेमेस्टर के दौरान याद किया, जबकि की समीक्षा नोट्स कुछ भर में आया था: कम्पोजिट बनाम संरचना। जो मैंने समझने में कामयाब रहा वह यह है कि समग्र तब होता है जब कोई ऑब्जेक्ट वास्तव में संपूर्ण वस्तुओं को समाहित करता है, जबकि रचना तब होती है जब यह केवल उन्हें पॉइंटर्स रखती है।डिजाइन पैटर्न: बनाम संरचना

  1. क्या यह सही है? क्या कोई मुझे थोड़ा बेहतर समझा सकता है?
  2. मैं एक दूसरे को कब पसंद करूंगा?

उत्तर

45

Composition

यह एक डिजाइन अवधारणा (नहीं वास्तव में एक पैटर्न) है। इस शब्द का उपयोग तब किया जाता है जब आप एक ऑब्जेक्ट का वर्णन करना चाहते हैं। यह अक्सर Composition over inheritance चर्चा में होता है।

इसके अलावा, संरचना मजबूत स्वामित्व का तात्पर्य है। एक ऑब्जेक्ट किसी अन्य ऑब्जेक्ट के (यानी जीवन चक्र का प्रबंधन करता है) का मालिक है। जब माता-पिता नष्ट हो जाते हैं, तो सभी बच्चे भी नष्ट हो जाते हैं। यदि कोई ऐसा मजबूत संबंध नहीं है (बच्चे माता-पिता से बाहर निकल सकते हैं) हम एग्रीगेशन के बारे में बात कर रहे हैं।

विकिपीडिया में महान उदाहरण का हवाला देते हुए:

उदाहरण के लिए, एक विश्वविद्यालय के विभिन्न विभागों (जैसे, रसायन विज्ञान) का मालिक है, और प्रत्येक विभाग के प्रोफेसरों की एक संख्या है। यदि विश्वविद्यालय बंद हो जाता है, तो विभाग अब मौजूद नहीं होंगे, लेकिन उन विभागों में प्रोफेसर मौजूद रहेंगे। इसलिए, विश्वविद्यालय को विभागों की संरचना के रूप में देखा जा सकता है, जबकि विभागों में प्रोफेसर का एकत्रीकरण है। इसके अलावा, एक प्रोफेसर एक से अधिक विभागों में काम कर सकता है, लेकिन एक विभाग एक से अधिक विश्वविद्यालयों का हिस्सा नहीं हो सकता है।

तो आप देख सकते हैं कि आपको स्वामित्व संबंधों के प्रकार के आधार पर संरचना या एकत्रीकरण के बीच चयन करना चाहिए।

Composite pattern

यह एक GOF डिजाइन एक अभिभावक-बच्चे मजबूत रिश्ता जहां बच्चे एक साधारण नोड या अन्य नोड्स के एक कंटेनर (संभवतः अन्य बच्चों से युक्त) हो सकता है का वर्णन पैटर्न है।

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

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

+0

+1 दो को समझाने के लिए +1, लेकिन ओपी * भी * को सूचक बनाम पर मदद की आवश्यकता थी। बस एक सूचक मुद्दा है। –

+0

@ मैटफ़ेनविक: ठीक है, मैंने कुछ स्पष्टीकरण और उद्धरण (एकत्रीकरण के बारे में भी) जोड़ा। –

+1

धन्यवाद। गोफ क्या है? – baruch

संबंधित मुद्दे