面向对象的可复用设计( Object Oriented Design / OOD)
1. 开闭原则 (Open Closed Principle)
对扩展开放,对修改关闭
2. 里氏代换原则(LSP)
1.可以使用基类的地方,其子类必然也能使用
2.并且原功能不会受到任何影响
-- 经典案例, 正方形是不是长方形的子类?
3.依赖倒转原则(DIP)
依赖抽象,不要依赖具体,面向接口编程
传统过程性设计办法倾向于高层依赖低层,抽象依赖具体
依赖倒转原则,就是把错误的依赖关系倒转过来
4.接口隔离原则(ISP)
使用多个专门的接口,比使用单一的接口要好
5.合成、聚合复用原则(CARP)
尽量使用合成,聚合,尽量不使用继承
6.迪米特法则
不跟陌生人说话……
- 这是“某人” 的朋友圈, 他与“朋友” 之间是朋友关系
这是“朋友” 与 “陌生人” 组成的朋友圈
迪米特法则建议,“某人” 与 “陌生人” 之间不要进行直接通话,而是通过“朋友”去调用“陌生人”的方法,对于“某人”来说,“陌生人”是不存在的。
怎么样才算“朋友”? 也只有患难见真情。
- 当前对象本身
- 以参量形式传入到当前对象方法中的对象
- 当前对象的实例变量引用的对象
- 当前对象实例是集合,则集合中的对象是朋友
- 当前对象创建的对象
应该是有依赖关系的,就算是“朋友”吧