命令模式

 1 /**
 2  *命令模式:将“请求”封装成对象,以便使用不同的请求、队列或日志来参数化其他对象。
 3  *命令模式也支持可撤销的操作。
 4  */
 5     /*
 6      * 实现命令接口
 7      */
 8 public interface Command{
 9     public void execute();
10 }
11 
12     /*
13      * 一个具体打开电灯的命令
14      */
15 public class LightOnCommand implements Command{
16     Light light;
17 
18     public LightOnCommand(Light light){
19         this.light = light;
20     }
21 
22     public void execute(){
23         light.on();
24     }
25 }
26 
27     /*
28      * 使用命令对象
29      */
30 public class SimpleRemoteControl{
31     Command slot;
32 
33     public SimpleRemoteControl(){}
34 
35     public void setCommand(Command command){
36         slot = command;
37     }
38 
39     public void buttonWasPressed(){
40         slot.execute();
41     }
42 }
43 
44     /*
45      * 简单测试
46      */
47 public class RemoteControlTest{
48     public static void main(String[] args){
49         SimpleRemoteControl remote = new SimpleRemoteControl();
50         Light light = new Light();
51         LightOnCommand lightOn = new LightOnCommand(light);
52 
53         remote.setCommand(lightOn);
54         remote.buttonWasPressed();
55     }
56 }

 

posted @ 2014-04-09 15:51  soul390  阅读(92)  评论(0编辑  收藏  举报