知识卡片

一个命令可以内部协调多个接收者协同完成

普通读书笔记卡 · 1870.b.3

内容

[[命令模式的定义与三个角色]]中一个Command不局限于只调用一个Receiver。如”增加一项需求” 意味着需求、页面、代码三方都要同步增加,只需在execute方法内部依次调用各接收者的方法, 调用方仍只发一条命令。发散:这是[[命令模式的优点与命令类膨胀的代价]]“类间解耦”收益的 延伸——业务复杂度增加只让Command内部实现变复杂,不会传导到调用方。

参考来源

- 位置:《设计模式之禅(第2版)》第15章《命令模式》(源文件:_epub-src/text/part0070.html) - 结论依据:原文展示在AddRequirementCommand的execute方法中增加对PageGroup和CodeGroup的调用,说明"客户Client只需要发布命令,至于如何执行这个命令,是协调一个对象,还是两个对象,都不需要关心,命令模式做了一层非常好的封装"。 - 原始内容:客户要求增加一项需求,那是不是页面也增加,同时功能也要增加呢?……在AddRequirementCommand类的execute方法中增加对PageGroup和CodePage的调用就可以了……客户Client只需要发布命令,至于如何执行这个命令,是协调一个对象,还是两个对象,都不需要关心。