设计原则包括:

1、单一职责原则、

2、里氏替换原则、

3、依赖倒置原则、

4、接口隔离原则、

5、迪米特法则、

6、开闭原则。


1、单一职责原则(Single Responsibility Principle,SRP):

There should never be more than one reason for a class to change.

对于一个类来说,应只专注于一件事和仅有一个引起变化的原因。

我自己的理解是:一个类需要专一完成它所能做的一件事,并不是很多事情都需要这一个类来提供完成,如果需要做其他事,就再创建另一个类。

优点:

a,降低类的负责性;

b,提高类的可读性;

c,提高代码的可维护性和复用性;

d,降低因变更引起的风险。


2、氏替换原则(Liskov Substitution Principle,LSP):

下面先来说说继承的优点和缺点吧:

优点:

代码共享,减少创建类的工作量,每个子类都拥有父类的所有属性和方法;

提高代码的可重用性;

提高代码的可扩张性;

提高产品或项目的开放性。

缺点:

继承是***性的,拥有父类的属性和方法;

降低代码的灵活性,必须拥有父类的属性和方法;

增强耦合性,父类属性或方法改变,需要考虑子类。

综上所述,继承的“利”大于“弊”,现在用“里氏替换原则”来降低“弊”带来的麻烦。


里氏替换原则的定义有两种:

①:假如对S类型的对象o1,都有类型T的对象o2,使得以S定义的程序P在所有的对象o1都替换成

o2,则程序P的行为没有发生变化,那么T是S的子类型。

②:所有引用基类的地方必须能够透明的使用其子类对象。


体现里氏替换原则的设计模式有:策略模式、组合模式、代理模式

3、依赖倒置原则(Dependency Inversion Principle,DIP)

面向接口编程——OOD。

高层模块不应该依赖底层模块,两者都依赖其抽象;抽象不依赖细节;细节应该依赖于抽象。

依赖倒置原则是JavaBean、EJB、COM等组件设计模型背后的基本原则。

本质:通过抽象(接口或抽象类)使各个类或模块的实现彼此独立,互不影响,实现模块间的松耦合。

使用此原则的规则:

①每个类,接口或抽象类;②变量的表现类型,接口或抽象类;③类都不从具体类派生;④不重写

基类方法;⑤结合里氏替换原则。

依赖倒置原则在大项目的体现上,优点很明显。


4、接口隔离原则(Interface Segregation Principle,ISP)

两种定义

①客户端不应该依赖他不需要的接口;

②类间的依赖关系应该建立在最小的接口上。

含义:a,一个类对另一个类的依赖性应当是建立在最小的接口上;

b,一个接口代表一个角色,不应当就爱那个不同角色都交给一个接口;

c,不应该强迫客户依赖他们不用的方法。


5、迪米特法则(Law of Demeter,LOD)

也叫做:最少知识原则(Least Knowledge Principle,LKP)

一个类需要调用另一个类的某一方法,可以通过第三者转发这个调用。

减少类之间的关系,降低类之间的耦合,提高类复用率。

设计模式使用迪米特法则的有:外观模式、中介者模式。


6、开闭原则(Open-Closed Principle,OCP)

在面向对象的编程中,开闭原则是最基础的原则,起到总的指导作用,其他原则都是开闭原则的手

段和工具。

①:提高复用性;

②:提高可维护性;

③:提高灵活性;

④:易于测试;