设计模式-命令模式-Command

命令模式-Command

源码地址:https://github.com/mumushuiding/golang-design-pattern/tree/master/08_Command

❓ 问题

命令模式可以把一个命令的 形成 和 执行 在时间上去耦。也就是命令生成和执行可以在不同的时间发生。

✔️ 解决方法

一个 具体 命令(execute()/执行)和指向 接收 对象(LightSource)的引用被 封装 在一个 基于 接口(ICommand)的对象(LightOffCommand)中,这个对象被交给调用者(LightSwitch)。调用者从客户得到命令,然后 初始化 用于执行命令的方法。

⚡️类图

 

?参与者

  • ICommand(命令接口)。定义了命令操作
  • LightOffCommand(具体命令)。实现了命令接口ICommand,封装 了一个命令, 存储 了执行这个命令所需的信息。
  • LightSwitch (调用者)。? 存储 了指向一个命令的引用,引用的类型是ICommand。
  • ?LightSource (接收者)。 识别 所有执行命令相关操作的类。

?评价

?优点

  • ?生成和执行在时间上 解耦
  • ?具体命令可以动态 更换
  • ♻️命令对象可以 复用

?缺点

  • 这个模式用于分布式系统时相当复杂
  • 调用命令时会生成额外开销
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值