码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式-命令模式

时间:2015-04-08 10:25:20      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:

定义:将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。

UML图:

技术分享

 1 //定义命令接口
 2 public interface Command {
 3 
 4     public void execute();
 5     
 6     public void undo();
 7     
 8 }
 9 //动作接收者
10 public class Receiver {
11 
12     public void open(){
13         System.out.println("receiver open");
14     }
15     
16     public void close(){
17         System.out.println("receiver close");
18     }
19 }
20 
21 //实现命令接口
22 public class ConcreteCommand implements Command{
23 
24     private Receiver mRec = null;
25     public  ConcreteCommand(Receiver rec) {
26         // TODO Auto-generated constructor stub
27         mRec = rec;
28     }
29     @Override
30     public void execute() {
31         // TODO Auto-generated method stub
32         mRec.open();
33     }
34 
35     @Override
36     public void undo() {
37         // TODO Auto-generated method stub
38         mRec.close();
39     }
40 
41 }
42 //调用者
43 public class Invoker {
44 
45     Command mCommand = null;
46     
47     public void setCommand(Command com){
48         mCommand = com;
49     }
50     
51     public void execute(){
52         if(mCommand != null){
53             mCommand.execute();
54         }
55     }
56     
57     public void undo(){
58         if(mCommand != null){
59             mCommand.undo();
60         }
61     }
62 }
63 //客户端
64 public class Client {
65 
66     public static void main(String[] args) {
67         Invoker invoker = new Invoker();
68         Receiver rec = new Receiver();
69         ConcreteCommand concreteCommand = new ConcreteCommand(rec);
70         invoker.setCommand(concreteCommand);
71         invoker.execute();
72         invoker.undo();
73     }
74 }

 

设计模式-命令模式

标签:

原文地址:http://www.cnblogs.com/jaden/p/4401530.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!