博客
关于我
面向对象设计原则 单一职责原则(Single responsibility principle)
阅读量:398 次
发布时间:2019-03-05

本文共 783 字,大约阅读时间需要 2 分钟。

单一职责原则(SRP:Single responsibility principle)

 

又称单一功能原则,面向对象的基本原则之一。它规定 一个类应该只有一个发生变化的原因。

该原则由罗伯特·C·马丁(Robert C. Martin)于《敏捷软件开发:原则、模式和实践》一书中给出。

 

但实际上我们很容易明白他的意思,却很难真正的理解它。

所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责。

而单一职责原则就是指一个类或者模块应该有且只有一个改变的原因。

 

如果我们有一个 DAL 类,那 DAL 类变化的原因有多少呢?

比如我搜索的时候要加一个字段,比如我删除要多删一些子记录,那么这算不算是不同的职责呢?

当然算,一个是查询,一个是删除,这不是两个截然不同的职责吗?

 

这是我们站在这个DAL的角度上来说,假如们站在 BLL 的角度来看呢?

那 DAL 类的职责就只有一个了,那就是负责实体的各种数据库交互了。

 

一个类,只有一个引起它变化的原因。应该只有一个职责。

每一个职责都是变化的一个轴线,如果一个类有一个以上的职责,这些职责就耦合在了一起。

这会导致脆弱的设计。当一个职责发生变化时,可能会影响其它的职责。另外,多个职责耦合在一起,会影响复用性。

 

这个时候我们说的职责,其实应该是站在类的外部,也就是调用者来看的角度。

比如我们上面举的例子,不会有人把四种数据库动作分在四个类中去写吧。

 

所以可以说

  • 类的职责是站在外部调用的角度来看的。
  • 一个类的职责应该是一组紧密相关的功能。

 

其实就是 一个类只负责一组相关的事情。

很多程序员都是黑就是黑,白就是白的思维。

其实呢 很多原则不是打死一定要遵守的,重点还是我们要具体情况具体分析,该让它单一的时候单一,该耦合的时候耦合。

只要最终以实用有用为目的,就没有错误的设计。

转载地址:http://awozz.baihongyu.com/

你可能感兴趣的文章
MySQL5.7.37windows解压版的安装使用
查看>>
mysql5.7免费下载地址
查看>>
mysql5.7命令总结
查看>>
mysql5.7安装
查看>>
mysql5.7性能调优my.ini
查看>>
MySQL5.7新增Performance Schema表
查看>>
Mysql5.7深入学习 1.MySQL 5.7 中的新增功能
查看>>
Webpack 之 basic chunk graph
查看>>
Mysql5.7版本单机版my.cnf配置文件
查看>>
mysql5.7的安装和Navicat的安装
查看>>
mysql5.7示例数据库_Linux MySQL5.7多实例数据库配置
查看>>
Mysql8 数据库安装及主从配置 | Spring Cloud 2
查看>>
mysql8 配置文件配置group 问题 sql语句group不能使用报错解决 mysql8.X版本的my.cnf配置文件 my.cnf文件 能够使用的my.cnf配置文件
查看>>
MySQL8.0.29启动报错Different lower_case_table_names settings for server (‘0‘) and data dictionary (‘1‘)
查看>>
MYSQL8.0以上忘记root密码
查看>>
Mysql8.0以上重置初始密码的方法
查看>>
mysql8.0新特性-自增变量的持久化
查看>>
Mysql8.0注意url变更写法
查看>>
Mysql8.0的特性
查看>>
MySQL8修改密码报错ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
查看>>