六大设计原则

来源:互联网 发布:数据库中的文件类型 编辑:程序博客网 时间:2024/05/16 13:14

六大原则:

Single Responsibility Principle:单一职责原则
Open Closed Principle:开闭原则
Liskov Substitution Principle:里氏替换原则
Law of Demeter:迪米特法则
Interface Segregation Principle: 接口隔离原则
Dependence Inversion Principle: 依赖倒置原则

单一职责原则:Single Responsibility Principle,简称SRP。

定义:
There should never be more than one reason for a class to change.
应该有且仅有一个原因引起类的变更。

好处:
类的复杂性降低,实现什么职责都有清晰明确的定义
可读性与可维护性提高
变更引起的风险降低。

坏外,无清晰明确的职责定义,过分细分职责会造成类数量剧增,人为的增加维护难度和系统复杂性。

对于单一职责原则,类的设计应尽量做到只有一个原因引起变化。

里氏替换原则:Liskov Substitution Principle,简称LSP。

定义:
If for each object 01 of type S there is an object o2 of type T such that for all programs P defined in terms of T,
the behavior of P is unchanged when o1 is substituted for o2 then S is a subtype of T.
如果对于每一个类型为S的对象o1,都有类型为T的对象o2使得以T定义的所有程序P在所有的对象o1都代换成o2时,程序的行为没有发生变化,那么类型S是类型T的子类型。

Functions that use ponters or references to base classes must be able to use objects of derived classes without knowing it .
所有引用基类的地方必须能透明的使用其子类对象。即父类能出现的地方子类就能出现,而且替换为子类也不会产生任何错误或异常。

里氏替换原则目的为增加程序的健壮性,版本升级时也可以保持非常好的兼容性。即使增加子类,原有的子类还可以继续运行。在实际项目中,每个子类对应不同的业务含义
,使用父类作为参数,传递不同的子类完成不同的业务逻辑,非常完美。

依赖倒置原则:Dependence Inversion Principle,DIP

High level modules should not depend upon low level modules. Both should depend upon abstractions. Abstractions should not depend upon details. Details should depend upon abstractions.

高层模块不应该依赖低层模块,两者都应该依赖其抽象。

抽象不应该依赖细节。

细节应该依赖抽象。

核心为面向接口编程。

接口隔离原则:

Cilents should not be forced to depend upon interfaces that they don’t use.
客户端不应该依赖其不需要的接口。

The dependency of one class to another one should depend on the smallest possible interface.
类间的依赖关系应该建立在最小的接口上

其核心为尽可能的小。

迪米特法则:Law of Demeter,LoD),也称最少知识原则:Least Knowledge Principle,LKP.
一个对象应该对其他对象有最少的了解。或者说一个类应该对自己需要耦合或调用的类知道的最少。

还有一个英文解释:Only talk to your immedate friends(只与直接朋友通信)

直接朋友:类直接依赖、聚合、组合的类

一个方法中尽量不要出现类中不存在的对象,JDK提供的类除外。

开闭原则:
Software entities like classes, modules and functions should be open for extension but closed for modifications.
一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。

开闭原则即为告诉我们应尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有代码来完成变化,它是软件实体的未来事件而制定的对现行开发设计进行
约束的一个原则。

原创粉丝点击