【六大原则总览】

1.单一职责原则

2.里氏替换原则

3.依赖导致原则

4.接口隔离原则

5.迪米特法则

6.开闭原则

 

【原则一:单一职责原则】

  英文全称:Single Responsibility Principle,简称SRP。

  要求一个接口或类只有一个原因引起变化,就是一个接口或类只有一个原则,它就负责一件事情。

[ 好处 ] 

* 类的复杂性降低,实现什么职责都有清晰明确的定义;

* 可读性提高,复杂性降低。

* 可维护性提高。

* 变更引起的风险降低。如果接口的定义职责做的很好,一个接口修改只对相应的实现类有影响,对其它接口没有影响,这对系统的扩展性和可维护性非常大的帮助。

 

 

【原则二:里氏替换原则】

首先分析一下继承的优点缺点;

[ 继承的优点 ]

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

* 提高了代码的重用性。

* 子类可以形似父类,但又异于父类。

* 提高代码的扩展性,许多开源框架的扩展接口都是通过继承父类来完成的。

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

[ 继承的缺点 ]

* 继承是侵入性的。只要继承,子类就必须拥有父类的所有属性和方法。

* 降低代码的灵活性,子类必须拥有父类的属性和方法,给子类添加了约束。

* 增强了代码的耦合性,当父类的常量、变量或方法修改时,就要考虑子类的修改。

[ 里氏替换原则的定义 ]

只要父类能出现的地方,子类就可以出现,而且替换给子类就不会出现任何的错误或异常,使用者不需要知道是子类还是父类,但是反过来是不可以的,有子类出现的地方,父类未必就可以。

[ 里氏替换原则的四层含义 ]

* 子类必须实现父类的方法。

* 子类必须有自己的个性

* 覆盖或实现或父类的方法时输入参数可以被放大。

* 覆写或实现父类的方法时输出结果可以被缩小。

 

【原则三:依赖倒置原则】

[ 在java语言中的表现 ] 

* 模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系通过接口或抽象类产生。

* 接口或抽象类不依赖其实现类。

* 实现类依赖接口或抽象类。

 

【原则四:接口隔离原则】

接口隔离原则要求接口中的方法尽量少。(单一职责要求类和接口职责单一,注重的是职责,是业务逻辑上的划分)

 

【原则五:迪米特法则】

也称为最少知识原则,一个对象应该对其它对象由最少的了解,即一个类应该对自己需要耦合或调用的类知道的最少。

 

【原则六:开闭原则】

软件实体,应该对扩展开放,对修改关闭,含义就是一个原件实体应该通过扩展来实现变化,而不是通过修改已有的代码来实现变化。