बच्चे को माता-पिता से जोड़ना - बुरा विचार?


15

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

अतीत में मैंने बच्चे पर एक कमजोर संपत्ति का उपयोग किया है ताकि वह वापस माता-पिता को संदर्भित कर सके, लेकिन मुझे लगता है कि एक कष्टप्रद उपरि जोड़ता है, लेकिन शायद यह करने का सबसे अच्छा तरीका है।

क्या यह सिर्फ एक बुरा विचार है? आप इस क्षमता को अलग तरीके से कैसे लागू करेंगे?

अद्यतन 1: अधिक संदर्भ जोड़ना। यह एक रेंडरिंग सिस्टम है इसलिए पैरेंट कंटेनर एक साथ समूहीकृत विंडो की एक सूची है। बच्चा आइटम (खिड़की) जो कहता है "मैं सबसे महत्वपूर्ण हूं!" मूल रूप से बाकी खिड़कियों के शीर्ष पर प्रदान किया जाना चाहता है।

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


3
आप एक की जरूरत नहीं है WeakReference। .Net कचरा संग्रहकर्ता साइकिल को संभाल सकता है। यदि बच्चा अब उपयोग में नहीं है (माता-पिता इसे इंगित नहीं कर रहे हैं), तो इसे माता-पिता के संदर्भ में रखने के बावजूद एकत्र किया जाएगा।
dbkk

क्या होता है अगर 2 बच्चे दोनों सोचते हैं कि वे सबसे महत्वपूर्ण बच्चे बनना चाहते हैं?
btilly

@btilly सबसे महत्वपूर्ण बच्चा वास्तव में इसे केवल माता-पिता की बाल-सूची में स्टैक के शीर्ष तक सीमित करता है। इसलिए जो भी इसे करता है, वह सबसे महत्वपूर्ण हो जाता है। मेरे परिदृश्य में, आप कभी भी सबसे महत्वपूर्ण संघर्ष नहीं करेंगे।
थ्रका

जवाबों:


18

क्या यह सिर्फ एक बुरा विचार है?

कई बार।

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

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

[संपादित करें:]

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


1
यह एक अच्छा जवाब है और आपको संभवतः इसके द्वारा उठाए गए सभी बिंदुओं पर विचार करना चाहिए और देखें कि क्या वे आपकी समस्या पर लागू होते हैं। यह कहते हुए कि मुझे नहीं लगता कि यह दुनिया का अंत है यदि आप एक साधारण कार्यान्वयन के रूप में संदर्भ के साथ शुरू करते हैं और जब चीजें हाथ से बाहर हो जाती हैं तो इसे रिफलेक्टर करते हैं।
रिपर्टी

सही उत्तर है। लेकिन अगर माता-पिता को जोड़ने वाला बच्चा एक बुरा विचार है, तो ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग अब वास्तविक जीवन की वस्तुओं से संबंधित नहीं है। क्या यह कोई अच्छी बात नहीं है?
मनोज आर

इस उत्तर के लिए अब तक धन्यवाद। मैंने अपने मूल प्रश्न में और संदर्भ जोड़ा है।
थ्रका

1
@ManojR - ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग कभी भी वास्तविक जीवन की वस्तुओं से संबंधित नहीं था।
तेलस्टिन

आपका संपादन मुझे WPF \ Silverlight में VisualTreeHelper के बारे में सोचने पर मजबूर करता है। इससे आपको वर्तमान नियंत्रण के संबंध के बारे में क्वेरी करने की अनुमति मिलती थी, बाकी UI सिस्टम नियंत्रणों के लिए। मुझे लगता है कि मैं कुछ इस तरह से लागू कर सकता हूं क्योंकि मेरे पास एक रूट नियंत्रण भी है जो बाकी सब की मेजबानी करेगा। धन्यवाद!!
थ्रका

0

निष्पादन उस बिंदु पर कैसे हुआ जहां बच्चा यह तय करता है कि वह सबसे महत्वपूर्ण होना चाहता है? क्या यह माता-पिता के माध्यम से वहां पहुंचा था? यदि हाँ, तो आप उस तरीके से अभिभावक को संदर्भ भेज सकते हैं।

जैसे। अगर सभी नोड्स में किसी प्रकार का अपडेट () विधि है जो कुछ ऐसा करता है

void update() {
    doSomething()
    for(Node n:childs){
        //do something
        n.update();
    }
}

आप इसे बदल सकते हैं

void update(Node parent) {
    doSomething(parent)
    for(Node n:childs){
        //do something
        n.update(this);
    }
}

हां यह करने का एक शानदार तरीका है। हालाँकि, मेरी स्थिति में यह संभव हो सकता है कि क्लाइंट लॉजिक कोड माता-पिता के लूप द्वारा शुरू न किया जाए।
थ्रका

0

मुझे नहीं लगता कि यह एक बुरा विचार है। आप प्रत्येक बच्चे के लिए एक क्रम क्रम मूल्य जोड़कर इसे हल कर सकते हैं। मैं "z-index" जैसी चीज़ों की परिकल्पना कर रहा हूँ जिनका उपयोग वेब पेजों में एक-दूसरे के पीछे या पीछे वस्तुओं को प्रदर्शित करने के लिए किया जाता है।

मुझे यकीन नहीं है कि आप इस तरह से कुछ कोड कैसे करेंगे, लेकिन अवधारणा संभव लगती है।


इस समाधान के साथ, समस्या अभी भी मौजूद है। यह केवल z- इंडेक्स के साथ ऑर्डर-इन-द-एरे कॉन्सेप्ट को बदल देता है। मुझे अभी भी बच्चे से माता-पिता तक एक संचार प्रणाली रखना होगा। धन्यवाद हालांकि :)
17
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.