Birbirleriyle iletişim kurması gereken derslerim var. Sorun şu ki eğer birini diğerini (bir çocuk ebeveyn ilişkisi) varsa, işler zorlaşır. Ya ebeveynin bir örneğini çocuğa geçirmeniz gerekir (bağımlılık enjeksiyonunu kullanıyorsanız önce hangisini yaratırsınız) veya delegeleri/etkinlikleri kullanabilirsiniz. Fakat ebeveynin çocuğun büyüdüğü olayı idare edebilmesi gerektiği gerçeğini zorlamak istiyorum. Bunu nasıl yapacağınızdan emin değilim. Ayrıca, etkinliğe birden fazla abone istemiyorum. Ebeveyn-çocuk ilişkisi sadece iki yönlü iletişim için yanlıştır. Ne yazık ki, nesnelerden birinin her zaman başladığını ve diğerinin de yanıt verdiği bir durum değildir. Ya başlayabilir ve diğeri cevap vermelidir.Sınıflar arasında iki yönlü iletişim için en iyi desen nedir?
Eksik olduğum başka bir desen var mı?
GÜNCELLEME: Üzgünüm, bunu açıklamak oldukça zor. Bir sınıfın başka bir sınıfa bir mesaj gönderdiğinde, yanıtı hemen beklemediğini eklemeyi unuttum. Yanıt eşzamansız olarak gelir, bu nedenle ya doğru yöntemi veya bir temsilci/etkinlik çağırmak için ebeveynin bir örneğine ihtiyacınız vardır. Maalesef aşağıdaki örnek sözde koddur. Umarım bu fikri elde etmek için yeterlidir. Arabulucu modeline bakmalı mıyım?
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
}
}
Çocuk hakkında farklı olan, burada etkinlikleri kullanmak istemediğiniz anlamına mı geliyor? –
Bir çocuğun ve bir ebeveynin kod örneklerini ekleyebilir misiniz? – jgauffin
Belki de ebeveynler ve çocuklar olarak atıfta bulunduğunuz gerçek nesneleri tanımlamanız size yardımcı olacaktır. Çocuğun ebeveyne bir ref ihtiyacı varsa, her zaman kötü değildir. TreeView, XmlNode gibi birçok durum vardır ve ayrıca bir Gözlemci kullanmak da çok uygun bir seçenek. Neden "Siz de olaya birden fazla abone istemiyorum" dediğinizden emin değilsiniz. Bunu açıklayabilir misiniz? –