1、封装变化: 找出程序中会变化的方面,然后将其和固定不变的方面相分离。 2、多用组合,少用继承 3、针对接口编程,不对实现编程 4、为交互对象之间的松耦合设计而努力 5、对扩展开放,对修改关闭 6、要依赖抽象,不要依赖具体类