我的命令和处理程序分为两个不同的层。我希望我的命令是作为POCO而对其处理程序一无所知。 在我脑海中出现的解决方案是这样的:
public interface ICommand
{
string GetHandler();
}
public interface ICommandHandler
{
void HandleCommand(ICommand command);
}
public class XCommand : ICommand
{
//...
public string GetHandler()
{
return "xh";
}
}
[Handler("xh")]
public class XCommandHandler : ICommandHandler
{
public void HandleCommand(ICommand command)
{
//handle
}
}
这是一种命令模式吗?
答案 0 :(得分:2)
不,Command Pattern将“处理程序”逻辑封装到命令对象本身,从而产生一个可以在任何地方执行的黑盒子。换句话说,命令模式中没有处理程序角色。它的关注点是当和 如何执行命令时,而不是谁正在执行。
但是,还有其他几个behavioral patterns来确定谁处理请求或事件。值得注意的是, Command-of-Command 和 Observer 模式符合此要求。