命令设计模式

应用:线程池、日程安排(Scheduler)、工作队列。

解耦,通过命令来解耦请求者和执行者, 请求者 ->命令 -> 执行者
实现:请求者执行命令,调用命令的execute()方法,命令继承封装执行者,调用执行者的具体方法。

  • 命令的撤销

  • 宏命令:一个命令执行多个命令

  • 队列请求:日程安排、线程池、工作队列

  • 命令模式将发出请求的对象和执行请求的对象解耦。

  • 在被解耦的两者之间是通过命令对象进行沟通的,命令对象封装了接收者和一个活一组动作。

  • 调用这通过调用命令对象execute()发出请求,这会使得接受者的动作被调用。

  • 调用者可以接受命令当作参数,甚至在运行时动态的执行。

  • 命令可以支持撤销,做法是实现一个undo()方法来回到execute()被执行前的状态。

  • 宏命令是命令的一种简单的延申,允许调用多个命令。宏方法也支持撤销。

  • 实际操作时,很常见使用“聪明”命令对象,也就是直接实现了请求,而不是将工作委托给接收者。

  • 命令也可以用来实现日志和事务系统。

public interface Command{
    public void execute();
}

public class ConcreteCommand{
    RealPerformer realPerformer;
    public ConcreteCommand(RealPerformer realPerformer){
        this.realPerformer = realPerformer;
    }
    public void execute(){
         realPerformer.doAction();
    }
}

public class Requester{
    Command command;
    public Requester(ConcreteCommand command){
        this.command= command;
    }

    public void request(){
        command.execute();
    }
}

你可能感兴趣的:(命令设计模式)