70.设计模式笔记-命令模式
来源:互联网 发布:英语视频翻译软件 编辑:程序博客网 时间:2024/05/01 11:03
转载请注明出处 http://blog.csdn.net/qq_31715429/article/details/78501040
本文出自:猴菇先生的博客
1.定义:
将一个请求封装成一个对象,从而让用户使用不同的请求把客户端参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。
2.使用场景:
需要抽象出待执行的动作,然后以参数的形式提供出来。
在不同的时刻指定、排列和执行请求。一个命令对象可以有与初始化请求无关的生存期。
需要支持取消操作。
支持修改日志功能,这样当系统崩溃时,这些修改可以被重做一遍。
需要支持实务操作。
3.例子:
/** * 接受者类 */public class Receiver{ /** * 真正执行具体命令逻辑的方法 */ public void action(){ System.out.println("执行具体操作"); }}
public interface Command{ /** * 执行具体操作的命令 */ void execute();}
/** * 具体命令类 */public class ConcreteCommand implements Command{ private Receiver mReceiver;//只有一个对接受者对象的引用 public ConcreteCommand(Receiver receiver){ mReceiver = receiver; } @Override public void execute(){ // 调用接受者的相关方法来执行具体逻辑 mReceiver.action(); }}
/** * 请求者类 */public class Invoker{ private Command mCommand;//持有一个对相应命令对象的引用 public Invoker(Command command){ mCommand = command; } public void action(){ mCommand.execute();//调用具体命令对象的相关方法,执行具体命令 }}
public class Test{ public static void main(String[] args){ Receiver receiver = new Receiver(); Command command = new ConcreteCommand(receiver); Invoker invoker = new Invoker(command); invoker.action(); }}
将行为调用者与实现者解耦。
接受者负责具体实施或执行一个请求,命令类在接受者和命令执行的具体行为之间加以弱耦合,请求者调用命令对象执行具体的请求。
在请求者里使用一个数据结构来存储执行过的命令对象,以此可以方便地知道执行过哪些命令动作,并可以在需要时恢复。
4.总结:
缺点是大量衍生类的创建,但是具有更弱的耦合性、更灵活的控制性以及更好的扩展性。
阅读全文
0 0
- 70.设计模式笔记-命令模式
- 设计模式笔记-命令模式
- 设计模式笔记--命令模式
- 设计模式笔记:命令模式
- 设计模式笔记:命令模式
- 设计模式笔记之---命令模式
- 设计模式学习笔记之命令模式
- 设计模式学习笔记之命令模式
- 设计模式 笔记 命令模式 Command
- 设计模式笔记(五)--命令模式
- 设计模式学习笔记-命令模式
- 设计模式学习笔记--命令模式
- [设计模式学习笔记]命令模式
- 设计模式学习笔记—命令模式
- 学习笔记:Java设计模式-命令模式
- 学习笔记:java设计模式--命令模式
- 设计模式笔记-Command命令模式
- 设计模式学习笔记之命令模式
- python爬虫(19)爬取论坛网站——网络上常见的gif动态图
- mysql存储引擎
- Codeforces Round #442E-dfs序&线段树的区间更新区间查询-Danil and a Part-time Job
- springmvc定义全局异常处理
- Linux 制作动/静态库-LS11
- 70.设计模式笔记-命令模式
- Spring Boot & Spring MVC 异常处理的N种方法
- Kubernetes离线安装、Kubernetes二进制文件方式安装
- SDN 下用ODL实现QoS保障(5)-获取拓扑
- 七步精通Python机器学习
- boot.img的解包与打包
- Python之33个关键字详解
- thinkphp5 验证码刷新 谷歌浏览器可以,火狐不行解决办法
- docker 镜像的迁移