1.单一职责原则
定义:不要存在多于一个导致类变更的原因(一个类只负责一项职责)
优点
1.降低类的复杂度,一个类只负责一个职责,其逻辑肯定要比负责多项职责简单的多
2.提高类的可读性,提高系统的可维护性
3.降低耦合度,减少需求变更引起的风险
导致违反此原则的原因主要是 职责扩散的可能,职责P被分化为粒度更细的职责P1和P2
2.开闭原则
定义:一个软件实体类,模块和函数应该对扩展开发,对修改关闭;用抽象构建框架,用实现扩展细节
符合开闭原则的最好方式是提供一个固有的接口,然后让所有可能发生变化的类实现该接口,让固定的接口与相关对象进行交互
使用23种设计模式的目的就是遵循开闭原则。也就是说,只要我们对前面5项原则遵守的好了,设计出的软件自然是符合开闭原则的
3.里氏替换原则
定义:LSP讲的是基类和子类的关系,任何基类可以出现的地方,子类一定可以出现
简单的理解为一个软件实体如果使用的是一个父类,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别。也就是说,软件里面,把父类都替换成它的子类,程序的行为没有变化
重构方案
1.创建一个新的抽象类C,作为两个具体类的超类,将A,B的共同行为移动到C中来解决问题
2.从B到A的继承关系改为委派关系
注意:尽量从抽象类继承,而不是从具体类继承
4.依赖倒置原则
定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象
核心思想:面向接口编程
传递依赖关系有三种方式:(1)接口传递 (2)构造方法传递 (3)setter方法传递
5.接口隔离原则
6.迪米特原则