1.封装变化。

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

3.多用组合,少用继承。

4.松耦合设计交互对象。

5.对扩展开放,对修改关闭。

6.要依赖抽象,不要依赖具体类。