我在我的系统中实现了一个命令模式,主要是因为我有几个层,我需要远程“调用”逻辑。
class DoWorkCommandMessage { int param; }
class DoWorkCommandHandler : Handler<DoWorkCommandMessage>
{
Execute(MyObject object) {
object.DoWork(message.param);
}
}
class MyObject
{
void DoWork(int param) {
_proxy.SendMessage(new DoWorkBinaryMessage(param));
}
}
如您所见,我基本上收到一条消息,将其转换为方法调用,然后将其转换回发送到另一层的消息。
我觉得这里有问题。
我最终重构了 MyObject 以删除所有方法,并用一个简单的 ProcessMessage 方法替换它们,该方法接收一条消息,翻译它,然后分派它。
这没关系,除了 MyObject 最终大部分只是转换代码,而不是“对象”......
为了进行单元测试,我必须继续调用 ProcessMessage() 而不是直接调用方法。
我正在寻找关于“消息传递和转换”与“消息 -> 方法 -> 消息”方法之间的这场战斗的想法。显然消息和方法是密切相关的。