设计模式——命令模式

    xiaoxiao2021-03-26  27

    命令(Command)模式:将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销操作。 Command:声明执行操作的接口; ConcreteCommand:将一个接受者对象绑定一个动作,调用接受者相应的操作,以实现Execute; Receiver:接受者,具体实施与执行一个请求; Invoker:要求该命令执行这个请求; Client:创建一个具体命令对象并设定它的接受者; 适用性: (1)Command模式是回调机制的一个面向对象的替代品; (2)在不同的时刻有不同的请求; (3)需要支持取消操作; (4)需要记录日志; 优点: (1)将调用操作的对象与知道如何实现该操作的对象解耦; (2)Command对象可以被扩展; (3)可以将多个命令封装成复合命令,复合命令可以使用组合模式; 缺点: 若命令过多,会造成Command子类过多; 实现: (1)若支持撤销与重做功能,则ConcreteCommand类需要保存额外信息,包括接受者对象、参数、执行命令前的数据,这里可以使用备忘录模式。还需要存储执行命令的历史列表; (2)对不能撤销、不需要参数的命令,可以使用模板来实现,避免每个动作可接受者都创建一个Command子类; (3)Receiver接受者可以是多个,要有共同的抽象类; (4)命令模式可以结合责任链模式,实现命令族解析任务;
    转载请注明原文地址: https://ju.6miu.com/read-660965.html

    最新回复(0)