java设计模式--行为型模式--命令模式

 1                                                 命令模式
 2  概述
 3     将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。
 4  
 5  
 6  适用性
 7     1.抽象出待执行的动作以参数化某对象。
 8 
 9     2.在不同的时刻指定、排列和执行请求。
10 
11     3.支持取消操作。
12 
13     4.支持修改日志,这样当系统崩溃时,这些修改可以被重做一遍。
14 
15     5.用构建在原语操作上的高层操作构造一个系统。
16  
17  
18  参与者
19     1.Command
20       声明执行操作的接口。
21 
22     2.ConcreteCommand
23       将一个接收者对象绑定于一个动作。
24       调用接收者相应的操作,以实现Execute。
25 
26     3.Client
27       创建一个具体命令对象并设定它的接收者。
28 
29     4.Invoker
30       要求该命令执行这个请求。
31 
32     5.Receiver
33       知道如何实施与执行一个请求相关的操作。任何类都可能作为一个接收者。
 1 public class Test {
 2 
 3     public static void main(String[] args) {
 4         Receiver rec = new Receiver();
 5         Command cmd = new CommandImpl(rec);
 6         Invoker i = new Invoker();
 7         i.setCommand(cmd);
 8         i.execute();
 9     }
10 }
1 public class Receiver {
2 
3     public void receive() {
4         System.out.println("This is Receive class!");
5     } 
6 }
1 public abstract class Command {
2     public Command(Receiver receiver) {
3         this.receiver = receiver;
4     } 
5     
6     protected Receiver receiver;
7     
8     public abstract void execute();
9 }
 1 public class CommandImpl extends Command {
 2 
 3     public CommandImpl(Receiver receiver) {
 4         super(receiver);
 5     }
 6     
 7     public void execute() {
 8         receiver.receive();
 9     }
10 }
 1 public class Invoker {
 2 
 3     private Command command;
 4     
 5     public void setCommand(Command command) {
 6         this.command = command;
 7     }
 8     
 9     public void execute() {
10         command.execute();
11     }
12 }

牛B的代码都在不断的重构,方便系统的扩展。今天又见识了...

原文地址:https://www.cnblogs.com/huzi007/p/3885243.html