一、设计模式七大原则
1、单一职责原则:每个类只负责自己的事情,做到职责单一。
优点:提高可读性和可维护性,降低变更引起的风险。
2、接口隔离原则:每个类建立自己的专用接口,不依赖万能接口。
优点:不用实现不关心的方法。
3、依赖倒转(倒置)原则:面向接口编程,不面向实现类。
具体:各层模块都应该依赖其抽象,抽象不应该依赖细节实现。
依赖传递三种方式:接口传递、构造方法传递、setter传递。
优点:使用接口或者抽象类可以指定规范,细节留给实现完成。
关联程度(耦合性)强弱对比:
泛化(继承)=实现 > 组合 > 聚合 > 关联 > 依赖
依赖:使用一下 关联:明显,认识熟悉。关联两个对象平等 聚合:生命周期不同,部分可超越类本身。(传入而非new) 组合:整体与部分密切关系,生命周期同步。
4、里氏替换原则:继承父类而不去改变父类
具体:引用基类的地方必须能透明的使用子类,即子类尽量不要重写父类方法
5、开闭原则:拓展新类而不是修改旧类
具体:灵活使用抽象和接口,每一次发生变化采用新的实现而不是修改旧代码。
6、迪米特原则(最少知道原则):无需直接交互的两个类,如果需要交互使用中间者。
具体:出现在成员变量、方法参数、返回值中的类为直接朋友,出现在局部变量中的为陌生朋友。直接优化陌生朋友
7、合成复用原则:优先组合,其次继承
类之间尽量使用合成/集合的方式,而不是使用继承。
二、前置知识点
1、依赖倒置(DIP)是一种设计原则,控制反转是一种设计模式,依赖注入是实现控制反转的手段。
2、依赖倒置:高层模块不应该依赖底层模块,都应该依赖其抽象,代码中的业务层依赖逻辑层、数据层,修改业务层给程序带来的风险会增加。