两大经验
- 对接口编程而不是对实现编程
- 优先使用对象组合而不是继承
三类设计模式
创建型模式
创建对象时, 灵活选取创建方式, 而不是直接new
结构型模式
关注类和对象的组合, 使用继承组合接口和定义组合对象
行为型模式
关注对象之间的通信
七大原则 SOLID +2(DC)
单一原则 SRP
每个类尽量就只实现一个功能
开闭原则 OCP
对扩展开放, 对修改关闭
尽量使用接口和抽象类
里氏替换原则 LSP
任何基类可以出现的地方, 子类一定可以出现
反例
正方形是矩形的一个特例, 则设正方形为矩形的子类, 但是子类不支持父类的"单独设置长宽高", 违反了LSP
接口隔离原则 ISP
使用多个隔离的接口比使用当个接口好
降低类之间的耦合度
依赖倒转原则 DIP
针对接口编程, 依赖于抽象而不依赖于具体
迪米特法则(最少知道法则) DP
一个实体应尽量少的与其他实体之间发生相互作用
保持系统模块相对独立
合用复用原则 CRP
尽量使用合成聚合的方式, 而不是使用继承
参考链接
http://www.runoob.com/design-pattern/design-pattern-intro.html