知识卡片

元数据配置驱动的扩展方式

普通读书笔记卡 · 1874.a.1.e

内容

除了接口设计,还可用元数据(配置参数)控制模块行为,把”扩展”从改代码进一步降级为改配置。 典型是IoC容器:新增Son子类实现新业务后,只需修改配置把注入的bean从Father换成Son, Java代码不动。发散:这是[[抽象约束是开闭原则的实现前提]]的一次升级——从”新增子类+改 实例化代码”演化为”新增子类+改配置”,代价是多了配置文件需要维护。

参考来源

- 位置:《设计模式之禅(第2版)》第6章《开闭原则》(源文件:_epub-src/text/part0025.html) - 结论依据:原文以Spring的SpringContext配置为例,说明新增Son子类后只需修改bean配置的class属性和引用,即可完成业务扩展而不修改Java源码,指出"达到极致的就是控制反转"。 - 原始内容:尽量使用元数据来控制程序的行为,减少重复开发……达到极致的就是控制反转(Inversion of Control),使用最多的就是Spring容器……通过扩展一个子类,修改配置文件,完成了业务变化,这也是采用框架的好处。