我的命令和处理程序分为两个不同的层.我希望我的命令是作为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
}
}
这是一个命令模式吗?
最佳答案 不,
Command Pattern将“处理程序”逻辑封装到命令对象本身,从而产生一个可以在任何地方执行的黑盒子.换句话说,命令模式中没有处理程序角色.它关注的是命令执行的时间和方式,而不是执行命令的人.
但是,有几个其他behavioral patterns确定谁处理请求或事件.值得注意的是,命令链和观察者模式符合这一要求.