1

找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。

把会变化的部分取出来并封装起来,以便以后可以轻易地改动或扩充此部分,而不影响不需要变化的其他部分。


2

针对接口编程,而不是针对实现编程。


3

为了交互对象之间的松耦合设计而努力。


4

要依赖抽象,不要依赖具体类

  • 变量不可以持有具体类的实现
  • 不要让类派生自具体类
  • 不要覆盖基类中已有的方法