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