从其处理程序中取消命令

时间:2016-07-11 15:02:10

标签: design-patterns command-pattern

enter image description here我的命令和处理程序分为两个不同的层。我希望我的命令是作为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
    }
}

这是一种命令模式吗?

1 个答案:

答案 0 :(得分:2)

不,Command Pattern将“处理程序”逻辑封装到命令对象本身,从而产生一个可以在任何地方执行的黑盒子。换句话说,命令模式中没有处理程序角色。它的关注点是 如何执行命令时,而不是正在执行。

但是,还有其他几个behavioral patterns来确定谁处理请求或事件。值得注意的是, Command-of-Command Observer 模式符合此要求。