知识卡片
用责任链模式扩展命令族只增类不改代码印证开闭原则
内容
[[命令模式作为责任链模式排头兵组成命令链框架]]的扩展价值:新增df磁盘命令族只需 新增AbstractDF标记类、三个具体实现类、一个DFCommand类,再往CommandEnum追加一行配置, LS相关原有代码一行不用动。关键机制是buildChain通过反射扫描子类动态组装责任链,新增 具体命令类继承对应抽象类即自动纳入链中。发散:这是”对扩展开放、对修改关闭”在责任链 场景下的具体呈现。
参考来源
- 位置:《设计模式之禅(第2版)》第34章《命令模式+责任链模式》34.1节(源文件:_epub-src/text/part0151.html)
- 结论依据:原文用增加df命令族的完整示例(新增AbstractDF、DF/DF_K/DF_G、DFCommand及CommandEnum配置项,LS相关代码不变)验证扩展性,并明确总结"仅仅增加类就完成了变更,这才是我们要的结果:对修改关闭,对扩展开放";其机制依赖`buildChain`通过`ClassUtils.getSonClass`反射扫描子类动态建链。
- 原始内容:仅仅增加了粗框的部分,也就是增加DFCommand、AbstractDF以及实现类就可以完成扩展功能……仅仅增加类就完成了变更,这才是我们要的结果:对修改关闭,对扩展开放。