1.概念

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

    2.特征

  • 扩展开放

  • 修改封闭

    3.设计软件怎么可以容易维护,又容易出问题的办法?

  • 多扩展

  • 少修改

    4.何时应对变化

  • 猜测出可能发生的变化种类,然后构造抽象隔离变化

  • 写代码时假设变化不会发生,当变化发生,创建抽象来隔离变化
  • 面对需求,程序的改动是通过增加新代码进行,而不是更改现有的所有代码
  • 开发人员仅对频繁发生变化的那一部分做出抽象