知识卡片

命令模式的优点与命令类膨胀的代价

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

内容

[[命令模式的定义与三个角色]]带来三点收益:类间解耦(调用者只依赖execute方法);可扩展性 (新增Command子类不影响Invoker);能与其他模式组合增强(配合[[模板方法模式的两类方法]] 缓解子类膨胀)。代价是命令类随业务命令种类增多线性膨胀,N种命令就有N个子类。发散:这类 “把行为封装成独立对象”的模式都会遇到子类数量膨胀,引入前应先估算变体数量。

参考来源

- 位置:《设计模式之禅(第2版)》第15章《命令模式》(源文件:_epub-src/text/part0069.html) - 结论依据:原文分三点列出命令模式的优点(类间解耦、可扩展性、结合其他模式更优秀),并说明缺点"如果有N个命令,问题就出来了,Command的子类就可不是几个,而是N个,这个类膨胀得非常大"。 - 原始内容:调用者角色与接收者角色之间没有任何依赖关系,调用者实现功能时只需调用Command抽象类的execute方法就可以……命令模式可以结合责任链模式,实现命令族解析任务;结合模板方法模式,则可以减少Command子类的膨胀问题……如果有N个命令……Command的子类就可不是几个,而是N个,这个类膨胀得非常大。