一、封装变化
二、多用组合,少用继承
三、针对接口编程,不针对实现编程
1)抽象不应该依赖细节,细节应该依赖抽象。
2)高层模块不应该依赖底层模块。两个都应该依赖抽象。
四、为交互对象之间的松耦合设计而努力
五、类应该对扩展开放,对修改关闭
面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码。
六、依赖抽象,不要依赖具体类
七、只和朋友交谈
八、别找我,我会找你
里氏代换原则:子类型必须能够替换掉他们的父类型。
参考:《Head first 设计模式》