设计模式学习笔记
- 单一职责原则 SRP (粒度不可度量, 因项目而异, 因环境而异)
优点:
- 类的复杂度降低,实现什么职责都有清晰明确的定义
- 可读性提高, 复杂度降低
- 可维护性提高
- 变更引起的风险降低
建议: 接口一定要做到单一职责, 类的设计尽量做到只有一个原因引起变化
- 里氏替换原则
继承的优点:
- 代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性
- 提高代码的重用性
- 子类可以形似父类, 但又异于父类
- 提高代码的扩展性, 实现父类的方法就可以为所欲为了。好多开源框架的扩展接口都是通过继承父类完成的
- 提高产品或者项目的开放性
- 继承氏侵入式的,只有有继承,就必须拥有父类所有的属性和方法
- 增强了耦合性。当父类的常量、变量和方法被修改时,需要考虑子类的修改
定义:只要父类能出现的地方子类就能出现
四层含义
- 子类必须完全实现父类的方法
- 子类可以有自己的个性(如果子类不能完整地实现父类的方法,或者父类的某些方法再子类中已经发生畸变,则建议断开父子继承关系,采用依赖、聚集、组合等关系替代继承)
- 覆盖或者实现父类的方法时输入参数可以被放大
- 覆写或者实现父类的方法时输出结果可以被缩小
- 依赖倒置原则
- 接口隔离原则
- 迪米特法则
- 开闭原则