一、问题描述
电视机是请求的接收者,遥控器是请求的发送者,遥控器上有一些按钮, 不同的按钮对应电视机的不同操作。抽象命令角色由一个命令接口来扮 演,有三个具体的命令类实现了抽象命令接口,这三个具体命令类分别 代表三种操作:打开电视机、关闭电视机和切换频道。显然,电视机遥 控器就是一个典型的命令模式应用实例。

参考类图:

二、主要代码:

public interface AbstractCommand {void execute();
}
public  abstract class Command {public abstract void execute();
}
public class ConcreteCommand extends Command{private Receiver receiver;@Overridepublic void execute() {receiver.action();}
}
public class Controller {private AbstractCommand openCommand,closeCommand,changeCommand;public Controller(AbstractCommand openCommand,AbstractCommand closeCommand,AbstractCommand changeCommand) {this.openCommand=openCommand;this.closeCommand=closeCommand;this.changeCommand=changeCommand;}public void open() {openCommand.execute();}public void change() {changeCommand.execute();}public void close() {closeCommand.execute();}
}
public class Invoker {private Command command;public Invoker(Command command){this.command = command;}public void setCommand(Command command){this.command = command;}public void call(){command.execute();}
}
public class Receiver {public void action(){}
}

public class Television
{public void open() {System.out.println("----------打--开--电--视--机----------");}public void close() {System.out.println("----------关--闭--电--视--机----------");}public void changeChannel() {System.out.println("----------更--改--频--道----------");}
}

public class TVChangeCommand implements AbstractCommand{private Television tv;public TVChangeCommand(){tv = new Television();}@Overridepublic void execute() {tv.changeChannel();//更改频道}
}
public class TVCloseCommand implements AbstractCommand{private Television tv;public TVCloseCommand(){tv = new Television();}@Overridepublic void execute() {tv.close();//关闭电视机}
}
public class TVOpenCommand implements AbstractCommand{private Television tv;public TVOpenCommand(){tv = new Television();}@Overridepublic void execute() {tv.open();//打开电视机}
}

测试类:

public class Client {public static void main(String[] args) {AbstractCommand openCommand,closeCommand,changeCommand;openCommand = new TVOpenCommand();closeCommand = new TVCloseCommand();changeCommand = new TVChangeCommand();Controller control = new Controller(openCommand,closeCommand,changeCommand);control.open();control.change();control.close();}
}

三、运行结果:

设计模式之命令模式(java)实例——电视机遥控器相关推荐

  1. 设计模式之命令模式(行为型)

    目录 一.模式定义 二.模式角色 三.模式分析 四.典型例子 五.适用场景 一.模式定义 命令模式(Command Pattern):将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分离,两 ...

  2. 设计模式之命令模式---转载

    https://blog.csdn.net/chunqiuwei/article/details/79030816 https://blog.csdn.net/panweiwei1994/articl ...

  3. 设计模式 之 命令模式

    2019独角兽企业重金招聘Python工程师标准>>> 设计模式 之 命令模式 命令模式比较简单,不过多赘述 为什么需要命令模式 将"行为请求者"与"行 ...

  4. 设计模式:命令模式(Command)

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  5. 深入浅出设计模式之命令模式

    命令模式 文章目录 命令模式 一.定义与理解 二.使用用例 1.非命令模式程序设计 2.命令模式程序设计 三.总结 一.定义与理解 命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行 ...

  6. 设计模式--责任链模式--Java实现

    设计模式–责任链模式–Java实现 责任链模式–链式数据结构–内存消耗–Java的awt事件一开始用责任链模式后来改为观察者模式–为什么呢?–现在的应用–dom事件–异常处理机制-过滤器链–等等 学习 ...

  7. 乐在其中设计模式(C#) - 命令模式(Command Pattern)

    原文:乐在其中设计模式(C#) - 命令模式(Command Pattern) [索引页] [源码下载] 乐在其中设计模式(C#) - 命令模式(Command Pattern) 作者:webabcd ...

  8. 23种设计模式之命令模式和策略模式的区别

    文章目录 概述 命令模式 策略模式 相同点 总结 概述 命令模式和策略模式确实很相似,只是命令模式多了一个接收者(Receiver)角色.它们虽然同为行为类模式,但是两者的区别还是很明显的.策略模式的 ...

  9. 【java设计模式】命令模式——电视机是请求的接收者,遥控器是请求的发送者,遥控器上有一些按钮,不同的按钮对应电视机的不同操作。

    命令模式(Command Pattern):将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化:对请求排队或者记录请求日志,以及支持可撤销的操作. 命令模式包含如下角色: Comman ...

最新文章

  1. 牛年前的一小结——打响本命年的第一枪,继续刷题!
  2. 如何用法向量求点到平面距离_高中数学丨2020新标课本,空间向量与二面角所有知识点,一张表搞定...
  3. python遗传算法工具包_Deap: python中的遗传算法工具箱
  4. Spring boot部署工程
  5. boost::math模块计算二项式随机变量的概率和分位数的简单示例
  6. OpenCV实现图像对齐ECC算法(附完整代码)
  7. spark里的hbase的ImmutableBytesWritable的打印问题scala
  8. java软件工程_java复习
  9. JS代码 是否显示横竖条
  10. lnmp 安装php扩展fileinfo.so
  11. 足不出户带你体验专业实验室,技术实现不在话下
  12. 【安全】Kerberos协议介绍
  13. mac 连接hbase的图形化界面_Mac 视觉史(二):90 年代失败 Mac 操作系统大赏
  14. BeanFactory的实现原理
  15. Apache Hudi入门应用
  16. Google 推出的编程学习应用 Grasshopper
  17. 概率图模型(总结篇)
  18. three.js 实现波纹效果
  19. 【阅读笔记】Federated Learning for Privacy-Preserving AI
  20. 支持nfc的android手机型号,哪些手机型号支持刷公交卡 支持nfc功能的手机有哪些汇总...

热门文章

  1. PMSM矢量控制技术中的参数整定问题
  2. 圣斗士星矢游戏抽奖计算机怎么计算,圣斗士星矢手游抽奖概率是多少 抽奖概率公布[多图]...
  3. TP-link wdr7800百M拆解
  4. 密码学简史(二)--- 区块链中的现代密码学
  5. 怎么看待互联网正在回暖这一说法?
  6. 小功率开关电源传导干扰的分析
  7. Python中循环语句的使用
  8. 顶尖文案app_topys顶尖文案app下载
  9. Qt 运行 exe 出现 no platform plugin
  10. 不同档次的计算机配置,Win7显卡型号和电脑配置型号不一样怎么回事