《Head First 设计模式》之命令模式——遥控器
命令模式(Command)
——将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。
- 要点
- 将发出请求的对象和执行请求的对象解耦。
- 被解耦的两者之间通过命令对象进行沟通。命令对象封装了接收者和一个或一组动作。
- 调用者通过调用命令对象的execute()发出请求,使得接收者的动作被调用。
- 通过实现一个undo()方法撤销命令。还可以使用一个堆栈记录操作过程的每一个命令,实现多步撤销。
- 宏命令允许调用多个命令,也支持撤销。
- 命令也可以用来实现日志和事务系统。
1 interface Command { 2 public void execute(); 3 } 4 5 class Light { 6 public void on() { 7 System.out.println("light on"); 8 } 9 10 public void off() { 11 System.out.println("light off"); 12 } 13 } 14 15 class LintOnCommand implements Command { 16 Light light; 17 18 public LintOnCommand(Light light) { 19 this.light = light; 20 } 21 22 @Override 23 public void execute() { 24 light.on(); 25 } 26 27 } 28 29 class SimpleRemoteControl { 30 Command command; 31 32 public SimpleRemoteControl() {} 33 34 public void setCommand(Command command) { 35 this.command = command; 36 } 37 38 public void buttonWasPressed() { 39 command.execute(); 40 } 41 } 42 43 public class Test { 44 public static void main(String[] args) { 45 SimpleRemoteControl control = new SimpleRemoteControl(); 46 Light light = new Light(); 47 LintOnCommand onCommand = new LintOnCommand(light); 48 49 control.setCommand(onCommand); 50 control.buttonWasPressed(); 51 } 52 }
转载于:https://www.cnblogs.com/-1307/p/6440191.html
《Head First 设计模式》之命令模式——遥控器相关推荐
- 设计模式 之 命令模式
2019独角兽企业重金招聘Python工程师标准>>> 设计模式 之 命令模式 命令模式比较简单,不过多赘述 为什么需要命令模式 将"行为请求者"与"行 ...
- 乐在其中设计模式(C#) - 命令模式(Command Pattern)
原文:乐在其中设计模式(C#) - 命令模式(Command Pattern) [索引页] [源码下载] 乐在其中设计模式(C#) - 命令模式(Command Pattern) 作者:webabcd ...
- 23种设计模式之命令模式和策略模式的区别
文章目录 概述 命令模式 策略模式 相同点 总结 概述 命令模式和策略模式确实很相似,只是命令模式多了一个接收者(Receiver)角色.它们虽然同为行为类模式,但是两者的区别还是很明显的.策略模式的 ...
- 设计模式之命令模式(java)实例——电视机遥控器
一.问题描述 电视机是请求的接收者,遥控器是请求的发送者,遥控器上有一些按钮, 不同的按钮对应电视机的不同操作.抽象命令角色由一个命令接口来扮 演,有三个具体的命令类实现了抽象命令接口,这三个具体命令 ...
- 【java设计模式】命令模式——电视机是请求的接收者,遥控器是请求的发送者,遥控器上有一些按钮,不同的按钮对应电视机的不同操作。
命令模式(Command Pattern):将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化:对请求排队或者记录请求日志,以及支持可撤销的操作. 命令模式包含如下角色: Comman ...
- Java 设计模式之命令模式
一.了解命令模式 1.1 什么是命令模式 命令模式将"请求"封装成对象,以便使用不同的请求.队列或者日志来参数化其他对象.命令模式也支持可撤销的操作.这种说法比较难以理解,换种说法 ...
- 设计模式笔记-命令模式
命令模式 最近在重新看设计模式,看了<Head First设计模式(中文版)>中的命令模式,跟上次刚入职看的感觉有点不一样,还是记录一下,便于以后查阅. 作用:将 动作的请求者 和 动作的 ...
- 设计模式之命令模式(行为型)
目录 一.模式定义 二.模式角色 三.模式分析 四.典型例子 五.适用场景 一.模式定义 命令模式(Command Pattern):将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分离,两 ...
- JAVA设计模式什么鬼(命令模式)——作者:凸凹里歐
命令模式,通常指的是一个对象向另一个对象发送信息指令的行为模型,比如父母命令孩子写作业.将军命令士兵进攻等.我们经过分析拆解方法会得到三个模块,首先得有命令发送方,接着是被传递的命令本身,最后就是命令 ...
最新文章
- matlab对图像信号进行频谱分析及滤波,数字信号处理课程设计---应用 Matlab对信号进行频谱分析及滤波...
- python3 json.dump乱码问题
- 清华大学郑莉c++答疑
- 科大星云诗社动态20220103
- mysql php宝塔 root_[转载]在安卓中安装宝塔面板运行PHP+MySQL
- 哲学家就餐问题python_哲学家就餐-同步问题解析-python
- php msi安装教程,如何判断msi安装包程序是否安装及安装路径
- 诗与远方:无题(四十八)
- 英特尔技术流新帅履职,给员工们一些“笔记”学习一下
- OPPO技术开放日第二期启动,聚焦碎片化场景下的流量探索
- Hessian Spring相关使用的简单例子
- pycharm的markdown文件编写
- python期货自动交易软件_python自动股票交易软件,求比较好用的股票自动交易软件...
- matlab对信号DTFT,【MATLAB】离散傅里叶变换DTFT和IDTFT
- 第二篇:Spring Cloud Eureka 服务注册+发现
- 恩格玛密码机的工作原理
- Prompt是什么意思?
- 第56章 SQL UCASE() 函数教程
- bash文件无法运行,提示没有那个文件或目录的解决方法
- iPhone设置中的“开发者”选项
热门文章
- 列注释_简单5步了解相关矩阵的注释热图
- 如何更好地利用“二八定律”提升SEO优化效果?
- 网站优化有什么值得注意的小细节吗?
- java book打印机_Java调用打印机进行打印
- python数据分析numpy_利用python进行数据分析-NumPy高级应用
- npoi的mvc怎么ajax导出,asp.net mvc利用NPOI导入导出Excel解决方法
- java 读取css文件_java文件读取的两种方式
- apache 编译php mysql_记一次痛苦的过程-------源码编译安装apache+php5+mysql
- redis实现分布式锁——核心 setx+pipe watch监控key变化-事务
- 一些开源搜索引擎实现——倒排使用原始文件,列存储Hbase,KV store如levelDB、mongoDB、redis,以及SQL的,如sqlite或者xxSQL...