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