Skip to content

Latest commit

 

History

History
51 lines (38 loc) · 2.04 KB

readme.md

File metadata and controls

51 lines (38 loc) · 2.04 KB

开放-封闭原则

软件实体(类、模块、函数)等应该是可以扩展的,但是不可修改的

例如:前面的扩展window.onload函数

开放-封闭原则最重要的点

最重要的就是找出程序会变化的地方。

  1. hook
  2. 回调函数

设计模式中的开放-封闭原则

  1. 发布订阅
  2. 模板方法
  3. 策略模式
  4. 代理模式
  5. 职责链模式

相对性

实际上,让程序保持完全封闭是不容易做到的。就算技术上做得到,也需要花费太多的时间和精力。而且让程序符合开放-封闭原则的代价是引入更多的抽象层次,更多的抽象有可能会增大代码的复杂度。

更何况,有一些代码是无论如何也不能完全封闭的,总会存在一些无法对其封闭的变化。作为程序员,我们可以做到的有下面两点。

  1. 挑选出最容易变化的地方,然后构造抽象来封闭这些变化
  2. 在不可避免发生修改的时候。尽量修改那些相对容易修改的地方。拿一个开源库来说,修改它的配置文件,总比修改它的源代码来的讲话。

其他文章

  1. 单例模式
  2. 策略模式
  3. 代理模式
  4. 迭代器模式
  5. 发布-订阅模式
  6. 命令模式
  7. 组合模式
  8. 模板模式
  9. 享元模式
  10. 职责链模式
  11. 中介者模式
  12. 装饰者模式
  13. 状态模式
  14. 适配器模式
  15. 外归模式
  16. 单一职责原则
  17. 最小知识原则
  18. 开放-封闭原则
  19. 代码重构