设计模式目录 http://blog.csdn.net/fenglailea/article/details/52733435 风.fox
将“请求”封装成对象,以便使用不同的请求,队列或者日志来参数化其他对象。 命令模式也支持可以撤销操作。
JAVA
// 接受者角色 public abstract class Receive{ // 抽象接受者,定义每个接受者都必须完成的业务 public abstract void doSomething(); } //命令角色 public class ConcreteCommand1 extends Receive{ // 对哪个Receive类进行命令处理 private Receive receive; // 构造函数传递接受者 public ConcreteCommand1(Receive _receive){ this.receive=_receive; } // 必须实现一个命令 public void execute(){ // 业务处理 this.receive.doSomething(); } } public class ConcreteCommand2 extends Receive{ // 对哪个Receive类进行命令处理 private Receive receive; // 构造函数传递接受者 public ConcreteCommand2(Receive _receive){ this.receive=_receive; } // 必须实现一个命令 public void execute(){ // 业务处理 this.receive.doSomething(); } } //调用者角色 Invoker 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){ //首先声明调用者Invoker Invoker invoker=new Invoker(); // 定义接受者 Receiver receiver=new ConcreteReciver1(); // 定义一个发送给接受者的命令 Command command = new ConcreteCommand1(receiver); // 把命令交给调用者去执行 invoker.setCommand(command); invoker.action(); } }类间解耦 可扩展性 命令模式结合其他模式会更会优秀
只要你认为是命令的地方就可以采用命令模式
