从电视机的角度来看设计模式之命令模式
转载请声明:http://www.cnblogs.com/courtier/p/4292187.html
- 命令模式的简介:
用于“行为请求者”与“行为实现者”解耦,可实现二者之间的松耦合,以便适应变化。
- 从代码方面来理解(我:调用者 遥控器:操作者又称为虚执行者 电视机:执行者):
package command;public interface Command {//延迟开机:void delay(String str);//暂停一下:void pause(String str);//马上开始:void start(String str); }
- 操作者必须持有执行者(不然,怎么知道交给谁):
package command;public class ConcreteCommand implements Command{//持有执行者的引用private Receiver receiver;public ConcreteCommand(Receiver receiver) {super();this.receiver = receiver;}@Overridepublic void delay(String str) {// TODO Auto-generated method stubstr = "延迟了30秒!" + str;receiver.delay(str);}@Overridepublic void pause(String str) {// TODO Auto-generated method stubstr = "暂停!"+str;receiver.pause(str);}@Overridepublic void start(String str) {// TODO Auto-generated method stub receiver.start(str);}}
- 真正的执行者::
package command;public class ConcreteCommand implements Command{//持有执行者的引用private Receiver receiver;public ConcreteCommand(Receiver receiver) {super();this.receiver = receiver;}@Overridepublic void delay(String str) {// TODO Auto-generated method stubstr = "延迟了30秒!" + str;receiver.delay(str);}@Overridepublic void pause(String str) {// TODO Auto-generated method stubstr = "暂停!"+str;receiver.pause(str);}@Overridepublic void start(String str) {// TODO Auto-generated method stub receiver.start(str);}}
- Client:它并不是真正的客户,它是操作者与执行者的桥梁:
package command; //组合体,因为,只有它才知道我的参数给谁调用。如果,没有它就好像一台遥控器的红外线只能一台机器用一样. public class Client {//遥控器private static Command command;//那台电视机private Receiver receiver;public Client(Receiver receiver) {super();this.receiver = receiver;}//对准哪台电视机public void assemble(){command = new ConcreteCommand(receiver);}}
- 真正的调用者:
package command; //真正的调用者 public class Invoker {//持有命令参数private Command command;public Invoker(Command command) {super();this.command = command;}public void runDelay(String str){//调用了延迟,延迟多少秒由Command来决定了 command.delay(str);}public void runPause(String str){//调用了暂停 command.pause(str);}public void runStart(String str){//调用了开始 command.start(str);} }
- 运行结果:
(源代码:https://github.com/aliencool/Design-Pattrn/tree/master/command)
- 结束语:
命令模式是GOF经典模式之一,应用于Runnable
转载于:https://www.cnblogs.com/courtier/p/4292187.html
从电视机的角度来看设计模式之命令模式相关推荐
- 设计模式之命令模式(行为型)
目录 一.模式定义 二.模式角色 三.模式分析 四.典型例子 五.适用场景 一.模式定义 命令模式(Command Pattern):将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分离,两 ...
- 设计模式 之 命令模式
2019独角兽企业重金招聘Python工程师标准>>> 设计模式 之 命令模式 命令模式比较简单,不过多赘述 为什么需要命令模式 将"行为请求者"与"行 ...
- 乐在其中设计模式(C#) - 命令模式(Command Pattern)
原文:乐在其中设计模式(C#) - 命令模式(Command Pattern) [索引页] [源码下载] 乐在其中设计模式(C#) - 命令模式(Command Pattern) 作者:webabcd ...
- 23种设计模式之命令模式和策略模式的区别
文章目录 概述 命令模式 策略模式 相同点 总结 概述 命令模式和策略模式确实很相似,只是命令模式多了一个接收者(Receiver)角色.它们虽然同为行为类模式,但是两者的区别还是很明显的.策略模式的 ...
- 设计模式之命令模式(java)实例——电视机遥控器
一.问题描述 电视机是请求的接收者,遥控器是请求的发送者,遥控器上有一些按钮, 不同的按钮对应电视机的不同操作.抽象命令角色由一个命令接口来扮 演,有三个具体的命令类实现了抽象命令接口,这三个具体命令 ...
- 【java设计模式】命令模式——电视机是请求的接收者,遥控器是请求的发送者,遥控器上有一些按钮,不同的按钮对应电视机的不同操作。
命令模式(Command Pattern):将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化:对请求排队或者记录请求日志,以及支持可撤销的操作. 命令模式包含如下角色: Comman ...
- JAVA设计模式什么鬼(命令模式)——作者:凸凹里歐
命令模式,通常指的是一个对象向另一个对象发送信息指令的行为模型,比如父母命令孩子写作业.将军命令士兵进攻等.我们经过分析拆解方法会得到三个模块,首先得有命令发送方,接着是被传递的命令本身,最后就是命令 ...
- 深入浅出设计模式之命令模式
命令模式 文章目录 命令模式 一.定义与理解 二.使用用例 1.非命令模式程序设计 2.命令模式程序设计 三.总结 一.定义与理解 命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行 ...
- 设计模式之命令模式---转载
https://blog.csdn.net/chunqiuwei/article/details/79030816 https://blog.csdn.net/panweiwei1994/articl ...
最新文章
- 使用 Shiro 设计基于用户、角色、权限的通用权限管理系统
- python 网络聊天服务端
- python3 时间、日期、时间戳的转换
- yum lock 解决方法
- Are We Ready for SDN? Implementation Challenges for Software-Defined Networks
- 【数据分析+建模案例】基于所给数据集对饭店流量指标进行预测
- C++为什么要内存对齐
- 怎样将WPS转换word格式?如何进行操作
- qt-embedded-linux-opensource-src-4.5.3移植到s3c6410
- 作者:王建新(1969-),博士,中南大学信息科学与工程学院教授,中国计算机学会高级会员。...
- 生信宝典,生物信息学习资源
- 网易云api接口_网易云音乐你喜欢吗?你自己也可以做一个
- android模拟点击滑动,模拟Android的view点击和滑动监听
- WPF应用程序启动顺序机制
- 100天python、github_GitHub - 1392792445/Python-100-Days: Python - 100天从新手到大师
- 为wordpress提速,禁用gravatar,使用本地头像
- Unity常见资源类型
- python爬虫系列第六次笔记之验证码以及代理的使用
- 什么叫一层交换机,二层交换机,三层交换机?
- Xcode(OC):control reaches end of non-void function