设计模式六大原则总结篇

525 阅读3分钟

一、前言

设计模式,是从不同角度对变化的封装,是优秀代码设计经验的总结。这些设计模式,遵循的设计规则就是六大设计原则。 六大设计原则主要有:

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

把这六个原则的首字母联合起来(两个 L 算做一个)就是 SOLID (solid,稳定的),其代表的含义就是这六个原则结合使用的好处:建立稳定、灵活、健壮的设计。

二、六大原则脑图与关系

2.1 单一职责原则(Single Responsibility Principle)

单一职责原则.png

2.2 里氏替换原则(Liskov Substitution Principle)

里氏替换原则.png

2.3 依赖倒置原则(Depenence Inversion Principle)

依赖倒置原则(DIP).png

2.4 接口隔离原则(Interface Segregation Principle)

接口隔离原则(ISP).png

2.5 迪米特法则(Law of Demeter)

迪米特法则(LOD).png

2.6 开闭原则(Open Close Principle)

开闭原则(OCP).png

2.7 设计原则与设计模式

上面以思维导图的方式,整理了六大设计原则的定义、优缺点以及注意事项。那么设计模式与设计原则,设计原则之间,关系又是怎么样的呢?如下图所示: 6大原则与23种设计模式关系.png

关系总结起来,有下面几点:

  1. 23种设计模式,以六大设计原则为指导
  2. 开闭原则,是最基础的原则,是其它原则的基础
  3. 基于设计模式和设计原则,想要实现的设计目标是:高内聚、低耦合

三、如何遵守六大原则

首先想要说的是:不必为了遵守而遵守。在设计的时候,需要结合具体的业务场景和实际资源环境,以解决不必要耦合度为出发点,设计有自己业务特色的高内聚、低耦合框架。对这六个原则的遵守并不是是和否的问题,而是多和少的问题。 那么,我们如何去评估一个框架设计是否合理?遵守六大设计原则的程度又是怎么样呢? 六大设计原则,刚好代表六个维度,所以很自然想到使用一个六维度表,来可视化直观展示一个设计的六大规则匹配程度,如下图所示。这边后来发现网上已经有作者想到的类似的方式介绍,所以这部分我直接引用文章《快速理解-设计模式六大原则》的相关图片和内容。

image.png

图中的每一条维度各代表一项原则,我们依据对这项原则的遵守程度在维度上画一个点,则如果对这项原则遵守的合理的话,这个点应该落在红色的同心圆内部;如果遵守的差,点将会在小圆内部;如果过度遵守,点将会落在大圆外部。一个良好的设计体现在图中,应该是六个顶点都在同心圆中的六边形

image.png

在上图中,设计1、设计2属于良好的设计,他们对六项原则的遵守程度都在合理的范围内;设计3、设计4设计虽然有些不足,但也基本可以接受;设计5则严重不足,对各项原则都没有很好的遵守;而设计6则遵守过渡了,设计5和设计6都是迫切需要重构的设计。

四、总结

软件项目开发过程中,需求是不断变化的,而且需求的变化又是不可预测的。因此在开发和软件设计的过程中,需要为不可预料的事情做好准备,这不是一件易事。使用设计模式,遵守设计原则,可以让我们很好的应对需求的变化。当然在实际使用过程中,需要灵活使用,切忌生搬硬套。

参考文章

  1. 快速理解-设计模式六大原则
  2. 《设计模式之禅》