知识卡片

抽象约束是开闭原则的实现前提

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

内容

落地[[开闭原则的定义]]的首要条件是”抽象约束”:接口划定扩展边界、变量引用类型尽量声明 为接口、抽象层一旦确定不应再改。BookStore依赖IBook接口而非NovelBook实现类,才能不改 代码接入ComputerBook;即使要给计算机书籍加方法,也不能直接改IBook,因为已投产的 NovelBook不需要这个方法。发散:开闭原则依赖[[依赖倒置原则的三层含义与Java体现]]先把 依赖关系建在抽象上。

参考来源

- 位置:《设计模式之禅(第2版)》第6章《开闭原则》(源文件:_epub-src/text/part0025.html) - 结论依据:原文对比"BookStore依赖IBook接口"与"若改为依赖NovelBook实现类"两种设计下能否顺利扩展ComputerBook,证明抽象约束是开闭原则得以实现的前提,并说明接口一旦定义投产就不应再修改。 - 原始内容:如果原有的程序设计采用的不是接口,而是实现类……我们这次的扩展是否还能继续下去呢?一旦这样设计,我们就根本没有办法扩展……接口或抽象类一旦定义,就应该立即执行,不能有修改接口的思想,除非是彻底的大返工。