博客
关于我
面向对象设计原则 单一职责原则(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/

你可能感兴趣的文章
Node.js 模块系统的原理、使用方式和一些常见的应用场景
查看>>
Node.js 的事件循环(Event Loop)详解
查看>>
node.js 简易聊天室
查看>>
Node.js 线程你理解的可能是错的
查看>>
Node.js 调用微信公众号 API 添加自定义菜单报错的解决方法
查看>>
node.js 配置首页打开页面
查看>>
node.js+react写的一个登录注册 demo测试
查看>>
Node.js中环境变量process.env详解
查看>>
Node.js之async_hooks
查看>>
Node.js也分裂了-开源社区动态
查看>>
Node.js创建第一个应用
查看>>
Node.js初体验
查看>>
Node.js升级工具n
查看>>
Node.js卸载超详细步骤(附图文讲解)
查看>>
Node.js卸载超详细步骤(附图文讲解)
查看>>
Node.js基于Express框架搭建一个简单的注册登录Web功能
查看>>
node.js学习之npm 入门 —8.《怎样创建,发布,升级你的npm,node模块》
查看>>
Node.js安装与配置指南:轻松启航您的JavaScript服务器之旅
查看>>
Node.js安装及环境配置之Windows篇
查看>>
Node.js安装和入门 - 2行代码让你能够启动一个Server
查看>>