uri*_*ium 5 .net design-patterns
我有需要彼此沟通的课程.问题是,如果你让一个包含另一个(子父关系),那么事情变得棘手.您需要将父项的实例传递给子项(如果使用依赖项注入,则首先创建哪一项),或者可以使用委托/事件.但我想强制执行父母必须能够处理孩子提出的事件这一事实.不太确定如何做到这一点.我也不想要多个订阅者参加活动.
双向关系对双向沟通感觉不对.不幸的是,不是一个对象总是启动而另一个响应的情况.要么可以启动,要么另一个应该响应.
我还缺少另一种模式吗?
更新:对不起,这很难解释.我忘了添加,当一个类向另一个类发送消息时,它不会立即期望响应.响应来自于异步这就是为什么您可能需要家长的一个实例调用正确的方法或委托/事件.对不起,下面的示例是伪代码.希望这足以得到这个想法.我应该看看调解员模式.
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
}
}
Run Code Online (Sandbox Code Playgroud)