ठीक है, मान लीजिए कि मेरे पास कक्षा है, एक्स और एक्स कुछ ऐसा है जो अन्य वस्तुओं के साथ एक समग्र संबंध है। चलो बहाना एक्स एक फुटबॉल स्टेडियम है।क्या यह बुरा ओओ प्रोग्रामिंग है? विधियों के माध्यम से इसे नीचे
एक्स कक्षा दर्शकों से भरा है। हालांकि, किसी विशेष गतिविधि के लिए प्रत्येक दर्शक का व्यवहार अलग-अलग होता है। अगर कथन के बजाय, मैं चाहता हूं कि विभिन्न व्यवहार दर्शक वर्ग के भीतर हों, ताकि मैं गतिशील बाध्यकारी का उपयोग कर सकूं।
हालांकि, समस्या यह है कि दर्शकों का व्यवहार "सॉकर स्टेडियम" वर्ग को प्रभावित करता है। तो मैं सॉकर स्टेडियम कक्षा से "इस" को एक विधि के माध्यम से, स्पेक्ट्रेटर कक्षा में पास करने की सोच रहा था, ताकि दर्शक वर्ग सॉकर स्टेडियम कक्षा में कुछ कर सके?
public class SoccerStadium{
SpecatorInterface s = new Spectator();
public void SpectatorBehaviour(){
s.doSomething(this);
}
public void doSomethingthingBySpecator(){
}
}
public class Spectator implements SpecatorInterface{
public void doSomething(SoccerStadium s){
s.doSomethingthingBySpecator();
}
}
मैं केवल यह करने के लिए इतना है कि मैं गतिशील बंधन का उपयोग करें और Specator.doSomething()
में व्यवहार में परिवर्तन कर सकते हैं, ताकि मैं एक विशेषता SoccerStadium के लिए पारित रूप में SpectatorSuperClass के विभिन्न प्रकार के बहुत सारे है और उसके बाद अलग व्यवहार कर सकते हैं।
संपादित करें: क्या होगा यदि मैंने this
पास करने के बजाय स्पेक्ट्रेटर कन्स्ट्रक्टर के माध्यम से स्पीकर के स्पीकर के संदर्भ को पारित किया?
मेरा मानना है कि शुद्ध तकनीक तंग युग्मन के कारण उस तकनीक पर क्रिंग करेगी, लेकिन ऐसा व्यापक रूप से उपयोग किया जाता है। एक "बेहतर" दृष्टिकोण एक इंटरफेस बनाने के लिए हो सकता है जो स्टेडियम लागू करता है जो परिभाषित करता है कि बाहरी इकाई क्या कर सकती है और स्टेडियम को अपने स्पेक्ट्रेटर वर्ग में उस इंटरफ़ेस प्रकार के रूप में स्वीकार करती है। – itsme86
specator फुटबॉल स्टेडियम को कैसे प्रभावित करता है? ऐसा लगता है कि यहां सबसे अच्छे प्रकार के रिश्ते को निर्धारित करने में एक महत्वपूर्ण बात है। –
@Esteban, बहुत सरल तर्क, मूल्यों को विशेषता विशेषता। कुछ भी भारी नहीं – user997112