单一职责原则(定义作用及经典例子详解)

单一职责原则(定义作用及经典例子详解)-mikechen

单一职责原则定义

单一职责原则,英文名为Single responsibility principle,又称为SRP原则。

单一职责原则的定义:就是对于类来说,一个类应该只负责一项职责,这就是单一职责原则。

单一职责原则的基本思想是各司其职,即每个模块(类、方法)只承担单个职责,避免多个职责交叉,从而导致修改其中一个功能的时候影响另外一个功能。

 

为什么要用单一职责原则?

原因主要分为如下3点:

  1. 单一职责原则可以降低类的复杂度,一个类仅负责一项职责,其逻辑肯定要比负责多项职责简单;
  2. 提高了代码的可读性;
  3. 提高系统的可维护性。

单一职责原则的核心就是控制类的粒度大小、将对象解耦、提高其内聚性,通常情况下, 我们都应当遵守单一职责原则 。

 

单一职责原则举例

举例来说明,下面我用一个画画来举例。

我们一起来先看不遵守单一职责原则,会出现什么问题?

单一职责原则(定义作用及经典例子详解)-mikechen

该段代码实现了电脑画画、人画画的功能,但是代码中的 Draw类违反了单一设计原则,维护性较差。

如果我们要修改电脑的画画方式,就要在draw方法上直接修改整代码来解决。

所以,上面的例子违法了单一职责原则,应该分解该类,或者增加方法来改进。

1)首先使用方法单一原则来实现,改进后代码如下:

单一职责原则(定义作用及经典例子详解)-mikechen

这段代码在方法这个级别上满足了单一职责原则,这样我们在调整任何对象的画画方式的时候都不会对其他人产生影响。

2)使用类的单一原则来实现,改进后代码如下:

单一职责原则(定义作用及经典例子详解)-mikechen

该段代码各个画图对象都独立成一个类,这样无论每个类如何调整画画方式都与其他类隔离。

 

接口隔离原则小结

  1. 接口隔离原则,降低类的复杂度,一个类只负责一项职责;
  2. 接口隔离原则,提高类的可读性、可维护性;
  3. 接口隔离原则,降低变更引起的风险;
  4. 通常情况下,我们应当遵守单一职责原则,只有类中的方法数量足够少,可以在方法级别保持单一职责原则。

 

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法