मेरे पास कक्षाएं हैं जिन्हें एक दूसरे के साथ संवाद करने की आवश्यकता है। समस्या यह है कि यदि आप एक को दूसरे (एक बच्चे के माता-पिता संबंध) बनाते हैं तो चीजें मुश्किल हो जाती हैं। आपको या तो माता-पिता के बच्चे में एक उदाहरण पारित करने की आवश्यकता है, (यदि आप निर्भरता इंजेक्शन का उपयोग कर रहे हैं तो आप पहले कौन सी बनाते हैं) या आप प्रतिनिधियों/घटनाओं का उपयोग कर सकते हैं। लेकिन मैं इस तथ्य को लागू करना चाहता हूं कि माता-पिता उस घटना को संभालने में सक्षम होना चाहिए जो बच्चे उठाता है। यह भी सुनिश्चित नहीं है कि यह कैसे करें। मैं भी इस कार्यक्रम के लिए कई ग्राहकों को नहीं चाहता।कक्षाओं के बीच दो तरह के संचार के लिए सबसे अच्छा पैटर्न क्या है?
अभिभावक-बाल संबंध दो तरह के संचार के लिए गलत लगता है। दुर्भाग्य से यह कोई मामला नहीं है कि वस्तुओं में से एक हमेशा शुरू होता है और दूसरा जवाब देता है। या तो शुरू कर सकते हैं और दूसरे को जवाब देना चाहिए।
क्या कोई अन्य पैटर्न है जिसे मैं याद कर रहा हूं?
अद्यतन: क्षमा करें यह समझाने में काफी मुश्किल है। मैं यह जोड़ना भूल गया कि जब एक वर्ग किसी अन्य वर्ग को संदेश भेजता है तो वह तुरंत प्रतिक्रिया की उम्मीद नहीं कर रहा है। प्रतिक्रिया असीमित रूप से आती है, यही कारण है कि आपको या तो सही विधि या प्रतिनिधि/घटना को कॉल करने के लिए माता-पिता के उदाहरण की आवश्यकता होती है। क्षमा करें नीचे दिया गया उदाहरण छद्म कोड है। उम्मीद है कि यह विचार पाने के लिए पर्याप्त है। क्या मुझे मध्यस्थ पैटर्न देखना चाहिए।
public class Foo
{
public void SendMessageAToBar()
{
MessageA msg = new MessageA();
Bar.ReceiveMessageAFromFoo(msg);
}
public void ReceiveMessageARespFromBar(MessageAResp msgResp)
{
//Got a response do something
}
public void ReceiveMessageBFromBar(MessageB msg)
{
//Do something msg
MessageBResp msgBResp = new MessageBResp();
Bar.ReceiveMessageBRespFromFoo()
}
}
public class Bar
{
public void ReceiveMessageAFromFoo(MessageA msg)
{
//DO something.
MessageAResp resp = new MessageAResp();
Foo.ReceiveMessageARespFromBar(resp);
}
public void SendMessageBToFoo()
{
MessageB msg = new MessageB();
Foo.ReceiveMessageBFromBar(msg);
}
public void ReceiveMessageBRespFromFoo(MessageBResp msgResp)
{
//Got a response do something
}
}
बच्चे के बारे में क्या अलग है जिसका अर्थ है कि आप यहां घटनाओं का उपयोग नहीं करना चाहते हैं? –
क्या आप बच्चे और माता-पिता के कोड उदाहरण जोड़ सकते हैं? – jgauffin
शायद यह मदद करेगा यदि आप वर्णन करते हैं कि आप कौन सी वास्तविक वस्तुएं माता-पिता और बच्चों के रूप में संदर्भित कर रहे हैं। अगर बच्चा माता-पिता को रिफ्रेंस करता है तो यह हमेशा बुरा नहीं होता है। TreeView, XmlNode आदि जैसे कई मामले हैं, और एक पर्यवेक्षक का भी उपयोग करना बहुत व्यवहार्य विकल्प है। निश्चित नहीं है कि आप क्यों कह रहे हैं "मैं भी कई ग्राहकों को घटना के लिए नहीं चाहता"। क्या आप इसे समझा सकते हैं? –