设计模式6大设计原则

2016-03-19  本文已影响149人  codekun

1. 单一职责原则

定义

单一职责原则(SRP:Single responsibility principle)又称单一功能原则。它规定一个类应该只有一个发生变化的原因。

阐述

单一职责适用于接口、类、方法。顾名思义,就是要求一个接口或类只有一个职责,它就负责一件事情。

好处

注意

职责没有一个量化的标准,并且受非常多因素的制约,现实中实现起来会有困难。

2. 里氏替换原则

定义1

如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1都代替成o2时,程序P的行为没有发生变化,那么类型S是类型T的子类型。

定义2

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

阐述

通俗点讲,只要父类能出现的地方子类就可以出现,而且替换为子类也不会产生任何错误或异常,使用者可能根本就不需要知道是父类还是子类。

里氏替换原则的4层含义

3. 依赖倒置原则

定义

依赖倒置原则(Dependence Inversion Principle,DIP),包含三层含义:

在Java语言中的表现

好处

采用依赖倒置原则可以减少类间的耦合性,提高系统的稳定性,降低并行开发引起的风险,提高代码的可读性和可维护性。

实践方法

结合里氏替换原则

接口负责定义public属性和方法,并且声明与其他对象的依赖关系,抽象类负责公共构造部分的实现,实现类准确的实现业务逻辑,同时在适当的时候对父类进行细化。

在项目中,大家只要记住是“面向接口编程”就基本上抓住了依赖倒置原则的核心。

4. 接口隔离原则

定义

阐述

接口隔离原则与单一职责的审视角度是不相同的,单一职责要求的是类和接口职责单一,注重的是职责,这是业务逻辑上的划分,而接口隔离原则要求接口的方法尽量少。

结构隔离原则的4层原则

5. 迪米特法则

定义

迪米特法则(Law of Demeter,LoD)也称为最少知识原则(Least Knowledge Principle,LKP):一个对象应该对其他对象有最少的了解。

阐述

通俗地讲,一个类应该对自己需要耦合或调用的类知道得最少,你(被耦合或调用的类)的内部是如何复杂都和我没关系,那是你的事情,我就知道你提供的这么多public方法,我就调用这么多,其他的我一概不关心。

迪米特法则的几层含义

6. 开闭原则

定义

一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。

阐述

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

重要性

开闭原则是最基础的一个原则。有以下好处:

实现方法

总结

六个原则如下:

把这6个原则的首字母(里氏替换原则和迪米特法则的首字母重复,只取一个)联合起来就是SOLID(solid,稳定的),其代表的含义也就是把这6个原则结合使用的好处:建立稳定、灵活、健壮的设计,而开闭原则又是重中之重,是最基础的原则,是其他5大原则的精神领袖。

遵循这6大设计原则基本上可以应对大多数变化,适当时候可以进行扩充,但是也并不局限于这6大设计原则。

上一篇下一篇

猜你喜欢

热点阅读