我试图找到一种简单的方法来解决我的处理程序。解决方案是“处理不同类型的消息”。但是我发现的每个解决方案都像这个想法一样,我坚持解决处理程序,因为我的处理程序有一个构造函数,它对其他接口有一些依赖关系。
例如,如果我遵循上述想法,我OrderMessageHandler
的就是
public class OrderMessageHandler
{
private readonly IInterface _interface;
public OrderMessageHandler(IInterface interface) {_inteface=interface}
bool HandleMessage( IMessage msg ) {
if ( !(msg is OrderMessage)) return false;
return true;
}
}
但是,这IInterface
有其他依赖关系,我不能简单地解决这个问题。我想知道是否有人比下面的课程有更好的主意?
public class MessageProcessor {
private List<IMessageHandler> handlers;
public MessageProcessor() {
handlers = new List<IMessageHandler>();
handlers.add(new SomeOtherMessageHandler());
handlers.add(new OrderMessageHandler());
}
public void ProcessMessage( IMessage msg ) {
bool messageWasHandled
foreach( IMessageHandler handler in handlers ) {
if ( handler.HandleMessage(msg) ) {
messageWasHandled = true;
break;
}
}
if ( !messageWasHandled ) {
// Do some default processing, throw error, whatever.
}
}
}