单一职责原则 定义:一个类只负责一个领域的相应职责。
开闭原则 定义:软件实体应对扩展开放,而对修改关闭。
里氏替换原则 定义:所有引用基类的对象能够透明的使用其子类的对象。
依赖倒转原则 定义:抽象不应该依赖于细节,细节依赖于抽象。
接口隔离原则 定义:使用多个专门的接口,而不是使用单一总接口。
合成复用原则 定义:尽量使用对象组合,而不是继承来达到复合目的。
迪米特法则 定义:一个软件实体应当尽可能少的与其它实体发生相互作用。
1.单一职责原则
: 每个类型(包括接口和抽象)功能要求单一,尽量只对外负责一个职责,应该仅有一个原因引起类的变更。不要让一个类存在多个改变的理由。最大的问题在于对职责的定义和划分,如果划分的很细,每个类只做和一个任务相关的业务,不把过多的业务放在一个类中完成,导致每个类都有比较单一的职责,这样就符合了高内聚低耦合。注意这里说的是职责而不是功能,并不是说一个类里只有一个函数而是这个类中函数所做的功能都是高度相关。
原因:这也是灵活的前提,类被修改的几率很大,因此应该专注于单一的功能。如果你把多个功能放在同一个类中,功能之间就形成了关联,改变其中一个功能,有可能中止另一个功能,这时就需要新一轮的测试来避免可能出现的问题。
核心:拆分到最小单位,解决复用和组合问题,封装的优良体现,即解耦和增强内聚性(高内聚,低耦合)。
优点: 降低了类的复杂度,明确了对应的职责、可读性和维护性变高、如果接口单一职责做得好,修改接口影响的仅仅是相应的实现类。
2.开放封闭原则:一个软件实体应该对扩展开发,对修改关闭。即在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展。开闭原则是设计原则的