设计模式学习之十三-命令模式

概述

需求

  1. 一套智能家电,电灯,风扇,冰箱,洗衣机
  2. 不同厂家的分别需要不同app控制
  3. 希望一个app控制所有的家电

需求实现原理图

在这里插入图片描述
简单代码实现

https://gitee.com/zhipanwang/code4java/tree/master/design/src/main/java/com/wang/command

基本

  1. Command Pattern 。软件设计中,我们经常需要想某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个。
  2. 命令模式可以实现请求发送者和请求接收者彼此解耦。
  3. 命令模式中,会将一个请求封装为一个对象,以便使用不同参数表示不同请求,同时命令模式也支持可撤销的操作
  4. 通俗的说:将军发布命令,士兵执行。命令是连接二者的对象。

原理类图

Command :命令接口,需要执行的命令在此抽象中
Invoker :调用者
Receiver : 接收者。
ConcreteCommand:实现Command接口,命令具体实现。

在这里插入图片描述

注意事项和细节

  1. 发起请求的对象和执行请求的对象解耦。发起请求的对象是调用者,调用者只要调用命令对象的execute()就可以让接收者工作。而不必知道具体接收者对象是谁,如何实现请求。
  2. 容易设计一个命令队列,只要把命令对象放入队列,就可以多线程执行命令。
  3. 容易实现对请求的撤销和重做。
  4. 不足:可能导致某些系统有过多命令类,增加系统复杂度。
  5. 空命令也是一种设计模式,它为我们省去了判空的操作。
  6. 命令模式经典应用场景:界面一个按钮都是一条命令,模拟CMD,订单的撤销与恢复,触发-反馈机制
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值