首页 / 设计模式 / 设计模式——命令模式
设计模式——命令模式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了设计模式——命令模式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3534字,纯文字阅读大概需要6分钟。
内容图文
- Command -----> 命令的通用接口
- ConcreteCommand -----> 开机命令
- Client -----> 用户
- Invoker -----> 开机键与开机组件之间的线路
- Receiver -----> 开机组件
1 先定义一个通用命令接口: 2 /** 3 * 命令接口 4 * @author Apache_xiaochao 5 * 6 */ 7 public abstract class Command { 8 9 protected Receiver receiver; //命令接收者1011/**12 * 设置命令的接收者 13 * @param receiver 14*/15public Command(Receiver receiver) { 16super(); 17this.receiver = receiver; 18 } 1920/**21 * 命令执行函数 22*/23publicabstractvoid execute(); 24 }
1 定义具体的开机命令(这里使用了通用类名,实际中可以替换成更加直观的类名): 2 /** 3 * 具体的命令 4 * @author Apache_xiaochao 5 * 6 */ 7 public class ConcreteCommand extends Command { 8 9/**10 * 设置命令的接收者 11 * @param receiver 12*/13public ConcreteCommand(Receiver receiver) { 14super(receiver); 15// TODO Auto-generated constructor stub16 } 1718 @Override 19publicvoid execute() { 20//命令的主体 ,命令本身不去执行具体的操作,而是给命令的接收者一个通知,具体操作由命令的接收者去做21 receiver.doSomething(); 22 } 2324 }
1 定义开机组件(这里使用了通用类名,实际中可以替换成更加直观的类名): 2 /** 3 * 这是一个命令接收者,负责执行命令 4 * @author Apache_xiaochao 5 * 6 */ 7 public class Receiver { 8 9 /** 10 * 开机函数 11 */ 12 public void doSomething(){ 13 System.out.println("命令接收者:Windows 正在启动..."); 14 } 15 }
1 定义用户类: 2 /** 3 * 客户类,创建一个命令,并设置命令的接收者 4 * @author Apache_xiaochao 5 * 6 */ 7 public class Client { 8 9 /** 10 * 创建一个命令,并设置命令的接收者 11 */ 12 public Command createCommand(){ 13 Receiver receiver = new Receiver(); 14//创建一条命令,并指定命令的接收者15 Command command = new ConcreteCommand(receiver); 16return command; 17 } 18 }
1 定义开机键与开机组件之间的线路(这里使用了通用类名,实际中可以替换成更加直观的类名): 2 /** 3 * 命令传递类 4 * @author Apache_xiaochao 5 * 6 */ 7 public class Invoker { 8 9 private Command command; 10 11 /** 12 * 通知命令接收者执行命令 13 */ 14 public void notifyReceiver(){ 15 command.execute(); 16 } 17 /** 18 * 获取命令 19 * @param command 20 */ 21 public void setCommand(Command command) { 22 this.command = command; 23 } 24 }
1 public class Driver { 2 public static void main(String[] args) { 3 // 用户按下开机键 4 Client client = new Client(); 5 Command command = client.createCommand(); //客户端创建一条命令 6//通信线路传递命令 7 Invoker invoker = new Invoker(); 8 invoker.setCommand(command); //获取用户创建的命令 9 invoker.notifyReceiver(); //传递命令,通知开机组件,有人要开机10 } 11 }
- Client创建命令,并指定命令的接收者
- Invoker传递命令,通知命令接收者执行命令
- Receiver接收命令,解析并执行
总结:
- 命令模式将发出命令的对象和执行命令对象之间解耦
- 发令者和执行者之间通过命令对象进行沟通,命令对象封装了命令接收者,以及一个或一组动作
- 命令可以支持撤销,做法是实现一个undo()方法来回到execute()被执行之前的状态
- 宏命令是命令的一种简单延伸,允许调用多个命令,支持撤销
- 命令也可以用来实现日志和事务系统
原文:http://www.cnblogs.com/xiaochao-cs-whu/p/3960483.html
内容总结
以上是互联网集市为您收集整理的设计模式——命令模式全部内容,希望文章能够帮你解决设计模式——命令模式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。