<<设计模式之禅(第二版)>>——第十五

2016-10-16  本文已影响5人  leiiiooo
定义:
通用类图:
命令模式的通用类图
/*
 * 定义一个抽象的接收类,用来定义执行命令的方法
 * */
public abstract class Receiver {
  public abstract void doSomething();
}
public class ReceiverOne extends Receiver {

  @Override
  public void doSomething() {
    // TODO Auto-generated method stub
        
  }

}
public class ReceiverTwo extends Receiver {

  @Override
  public void doSomething() {
    // TODO Auto-generated method stub

  }

}

/*
 * 定义抽象的命令类
 * */
public abstract class Command {
  // 每个命令类都有一个执行命令的方法
  public abstract void execute();
}
public class ConcreteCommandOne extends Command {
      private Receiver receiver;

  public ConcreteCommandOne(Receiver receiver) {
    // TODO Auto-generated constructor stub
    this.receiver = receiver;
  }

  @Override
  public void execute() {
    // TODO Auto-generated method stub
    this.receiver.doSomething();
  } 

}
public class ConcreteCommandTwo extends Command {

  private Receiver receiver;

  public ConcreteCommandTwo(Receiver receiver) {
    // TODO Auto-generated constructor stub
    this.receiver = receiver;
  }

  @Override
  public void execute() {
    // TODO Auto-generated method stub
    this.receiver.doSomething();
  }

}
/*
 * 定义执行类,根据不同的command 做出对应的操作
 * */
public class Invoker {
  private Command command;

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

  // 执行命令
  public void action() {
    this.command.execute();
  }
}
public class Client {
  public static void main(String[] args) {
    //实际中receiver不会进行暴露,需要做好必要的封装
    Invoker invoker = new Invoker();
    invoker.setCommand(new ConcreteCommandOne(new ReceiverOne()));
    invoker.action();
  }
}
优点:
缺点:
上一篇 下一篇

猜你喜欢

热点阅读