设计模式(第十四式:命令模式)

概念:
  命令模式:Encapsulates a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undoable operations.将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的赊销和恢复功能。

实现:
  指令接口

public interface Command {
    void execute();
}


  具体指令

public class ReaderCommand implements Command {

    private Book book;

    public ReaderCommand(Book book){
        this.book = book;
    }

    @Override
    public void execute() {
        book.read();
    }
}

  

  执行器

public class Invoker {

    private Command command;

    public void setCommand(Command command){
        this.command = command;
    }

    public void action(){
        this.command.execute();
    }
}


测试:

@Test
public void commandTes(){

    Command command = new ReaderCommand(new Book());

    Invoker invoker = new Invoker();
    invoker.setCommand(command);

    invoker.action();
}


分析:
  1.具有很好的可扩展性,因为抽象了指令接口做父类。
  2.解藕合,执行器不需要关心调用的是什么对象,只关系输入的指令。
  3.可以和很多模式结合使用,比如模版方法模式,在执行器或者具体指令中都可添加模版方法。
  4.可能也会出现大量的指令类,因为一般指令类只实现一个指令方法。


原文地址:https://www.cnblogs.com/ben-mario/p/11133155.html