所以说我有:
public interface SystemA
{
void MethodA(string a, string b, int c);
}
在我的应用程序的某个地方,
public class ClientA
{
public SystemA mSystemA;
public ClientA()
{
mSystemA.MethodA("whatever", "ok", 42);
}
}
但我试图弄清楚如何改变它以满足以下要求,
- 对系统上的方法的调用可能会也可能不会收到特定的响应
- 期望响应的方法可能会根据发送后经过的时间触发不同的操作,例如再次调用该方法、通知客户端或通知系统
- 客户端也必须能够接收消息
- 我希望系统(或接收客户端)的接口是唯一需要改变的东西。
- 最小的开销
- 避免使用单例,因为它们会破坏可重用性并造成紧密耦合
具体来说,我有三个系统(其中有很多)负责与远程资源进行交互,并且无法保证对其接口的调用是否会让我得到响应,或者我什么时候会得到响应,或者响应是否会有效 - 在系统本身和使用它们的客户端中处理这些情况非常复杂,即使有状态来专门分配行为。
我尝试或考虑过但不喜欢的事情:
- 事件系统 - 您必须为要向系统公开的每个新方法定义新事件和侦听器,并且每当您更改方法时,您必须更改所有要匹配的事件、所有侦听器等。还有 FAR使用它的开销很大。如果您指定希望指定每个事件的参数,它会创建大量工作,但是如果您使事件真正通用,那么您最终不得不在发送者和接收者之间来回来回匹配它们。
- 命令 - 您必须为接收器上的每个方法定义新命令,并且每次要更改它们所依赖的方法时,您都必须更改命令。除此之外,每个命令的构造函数都必须匹配方法的签名。我觉得这也会有太多的开销。
想法?