나는 서로 통신해야하는 클래스가 있습니다. 문제는 만약 당신이 하나를 다른 부모 관계 (어린이 부모 관계)를 포함하게 만들면 일이 까다로워진다는 것입니다. 부모 인스턴스를 자식으로 전달하거나 (종속성 삽입을 사용하는 경우 먼저 생성하는 인스턴스) 대리자/이벤트를 사용할 수 있습니다. 그러나 나는 부모가 아이가 제기하는 사건을 처리 할 수 있어야한다는 사실을 강요하고자합니다. 그렇게하는 법도 그다지 중요하지 않습니다. 나는 또한 이벤트에 여러 가입자를 원하지 않는다.클래스 간 양방향 통신에 가장 적합한 패턴은 무엇입니까?
양방향 의사 소통에서 부모 - 자식 관계가 잘못된 것 같습니다. 불행하게도 객체 중 하나가 항상 시작되고 다른 객체가 응답하는 경우는 아닙니다. 어느 쪽도 시작할 수 있고 다른 쪽이 응답해야합니다.
다른 패턴이 있습니까?
업데이트 : 죄송합니다. 설명하기가 어렵습니다. 한 클래스가 다른 클래스에 메시지를 보내면 즉시 응답을 기다릴 필요가 없다고 덧붙였다. 응답은 비동기 적으로 이루어 지므로 올바른 메서드를 호출하기 위해 부모 인스턴스가 필요하거나 대리자/이벤트가 필요합니다. 아래의 예는 의사 코드입니다. 바라건대 아이디어를 얻는 것으로 충분합니다. 나는 중재자 패턴을 봐야 할까?
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 등 많은 경우가 있으며 Observer도 매우 실용적인 옵션입니다. 왜 당신이 "나는 또한 이벤트에 여러 가입자를 원하지 않는다"고 말하고 있는지 잘 모르겠다. 그것도 설명해 주시겠습니까? –