设计模式 – 从其处理程序中取消命令

《设计模式 – 从其处理程序中取消命令》我的命令和处理程序分为两个不同的层.我希望我的命令是作为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确定谁处理请求或事件.值得注意的是,命令链和观察者模式符合这一要求.

点赞