命令模式和组合模式 -- 经常一起使用的模式

本文探讨了组合模式和命令模式在软件设计中的作用。组合模式用于处理整体与局部对象的操作,使调用者能统一处理。而命令模式则将复杂操作封装到命令对象中,发令者与执行者通过命令对象交互,便于扩展和修改。在UI开发等场景中,两者常常结合使用,提高代码的灵活性和可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍

组合模式 是一种用来方便操作整体和局部对象的模式,

比如: 你的老板是周扒皮

  1. 周扒皮对部门中小王 进行 降薪 操作, 操作对象是小王,
  2. 周扒皮也可以对整个不能进行降薪操作, 操作对象是部门
    部门就是多个小王的组合, 对于老板来说他不关心部门和小王的区别, 他只要这个操作对象支持降薪就可以了, 而组合模式就是屏蔽这个整体和局部区别使得调用者 方便操作的设计模式

命令模式分为发令者和执行者两个部分, 是一种把复杂操作封装到命令对象中有执行者执行的设计模式, 发令者可以不用关系执行的细节

比如: 餐馆 服务员接单后 下发给后厨的初始操作的场景

  1. 先分配好每个厨师做特定的菜, A 厨师做辣子鸡,并且每个步骤计划好. B 厨师做鱼香肉丝
  2. 服务员收到辣子鸡的单后, 来到后厨都A厨师下发指令, A厨师就按照计划好的开始做菜

当前代码的场景和显示有点区别. 现实中厨师已经自己知道辣子鸡的做法, 服务员只要告诉厨师 辣子鸡 三个字就可以.

但是代码中, 需要 " 辣子鸡" 命令对象中需要封装好辣子鸡的操作方法, 这样厨师对象收到命令后 直接按照命令中的只是操作就可以了,

将操作方法和命令封装到一起的好处是: 可以很方便的扩展和修改命令对象而不用改变服务员对象和 厨师对象, 需要将执行者的引用也放入命令对象中,

两个模式结合

命令模式中 经常会有很多的命令需要一起发送给执行者操作, 如果使用组合模式 将多个命令组合成一个, 这样就可以不用多个命令传递了.

使用场景

在界面UI开发的场景中, 经常会用到这两个模式, 当点击一个按钮的时候, 界面系统会生成一个命令, 并传递给底层的逻辑系统执行

思考

命令模式 是把不同的复杂逻辑封装到不同的命令对象中, 发令者 和 执行者 之间通过命令对象交互, 对于业务逻辑的修改 只用修改命令对象就可以, 不用修改调发令者和执行者. 并且命令对象也很容易扩展.

但是 对于命令对象的封装要求比较高, 使用组合模式也可以很方便的 组合复杂命令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值