六大设计原则(一)SRP单一职责原则
单一职责原则SRP(Single reponsibility principle)
BO(Business Object):业务对象
Biz(Business Logic):业务逻辑
SRP最简单的例子:用户信息维护类
单一职责原则SRP定义
应该有且仅有一个原因引起类的变更。(一个接口只有一个职责)
SRP例子:电话通话过程
电话通话的过程:拨号、通话、回应、挂断。
如果按照一定职责进行划分:可以分为协议管理和数据传送。
协议管理:拨号和挂机。
数据传送:通话.
这个类中包含两个职责,但是拨号和挂机与通话互不影响相互独立(即拨号就是拨号,挂机就是挂机,他们两个在执行完后,进行通话,并不会再产生影响。)。此时该类可以进一步优化为两个职责即划分为两个接口。
组合关系:虚线箭头,整体与部分的关系,菱形指向整体部分,部分不能离开整体。(电话由协议部分和数据传送两部分构成,任何一个单独存在都不能使用)
实现关系:虚线空心箭头,类实现接口。
依赖关系:菱形箭头,使用关系:类的实现需要另一个类的协助。(数据传输的过程需要进行拨号和挂断)
组合关系是一种强耦合关系,由此划分会多出两个类,增加类的复杂性,因此可以才用面向接口编程重新设计此类图。
SRP优点
- 类的复杂性降低,实现的职责有了清晰的定义。
- 可读性提高。
- 可维护性提高。
变更引起的风险降低。
SRP存在的问题
- SRP标准不同导致,职责可以有多种划分方法。单一职责划分提出了编写程序的标准,用职责和变化原因衡量,接口设计的优良,但是由于不同项目而导致的度量标准也是不同的。
SRP不能过分细分,否则会导致类的剧增,增加维护成本。
SRP应用范围
接口、类、方法。
SRP应用到方法中,每个方法的职责明确清晰。
如图,此方法根据参数类型进行绑定到userBo进行相关操作。即一个方法承担了多个职责。
改进后:一个方法承担一个职责
SRP总体要求
接口一定要做到单一职责,类的的设计尽量做到单一职责
六大设计原则(一)SRP单一职责原则的更多相关文章
- C#软件设计——小话设计模式原则之:单一职责原则SRP
前言:上篇C#软件设计——小话设计模式原则之:依赖倒置原则DIP简单介绍了下依赖倒置的由来以及使用,中间插了两篇WebApi的文章,这篇还是回归正题,继续来写写设计模式另一个重要的原则:单一职责原则. ...
- 设计模式六大原则(一):单一职责原则(Single Responsibility Principle)
单一职责(SRP)定义: 不要存在多于一个导致类变更的原因,通俗的说,即一个类只负责一项职责. 问题由来: 类T负责两个不同的职责:职责P1,职责P2.当由于职责P1需求发生改变而需要修改类T时,有可 ...
- 【设计模式六大原则1】单一职责原则(Single Responsibility Principle)
http://blog.csdn.net/zhengzhb/article/category/926691/1 图片素材来源,java学习手册 ps.内容为自己整理 定义:不要存在多于一个 ...
- 【面向对象设计原则】之单一职责原则(SRP)
单一职责原则是面向对象原则五大原则中最简单,也是最重要的一个原则, 他的字面定义如下: 单一职责原则(Single Responsibility Principle, SRP): 一个类只负责一个功能 ...
- 面象对象设计原则之一:单一职责原则(Single Responsibility Principle, SRP)
单一职责原则是最简单的面向对象设计原则,它用于控制类的粒度大小.单一职责原则定义如下:单一职责原则(Single Responsibility Principle, SRP):一个类只负责一个功能领域 ...
- 面向对象设计原则一:单一职责原则(SRP)
单一职责原则(SRP) 定义:系统中的每一个类都应该只有一个职责. 好处:高内聚.低耦合. 解释说明: 单一职责也就是说我们应该让一个类或一个对象只做一件事情,每个类所要关注的就是自己要完成的职责是什 ...
- 设计模式原则(1)--Single Responsibility Principle(SRP)--单一职责原则
1.定义: 不要存在多于一个导致类变更的原因.通俗的说,即一个类只负责一项职责. 2.使用场景: 如果类A有两个职责:d1,d2.当职责d1需要修改时,可能会导致原本运行正常的职责d2功能产生问题. ...
- 面向对象设计之SRP(单一职责)原则
SRP设计原则面向对象类设计的第一个原则,最优先考虑的因素 一个类应该有且仅有一个职责.所谓一个类的职责是指引起该类变化的原因,如果一个类具有一个以上的职责,那么就会有多个不同的原因 引起该类变化,其 ...
- IOS设计模式的六大设计原则之单一职责原则(SRP,Single Responsibility Principle)
定义 就一个类而言,应该仅有一个引起它变化的原因. 定义解读 这是六大原则中最简单的一种,通俗点说,就是不存在多个原因使得一个类发生变化,也就是一个类只负责一种职责的工作. 优点 类的复杂度降低,一个 ...
随机推荐
- 【读英文文档】Whetting Your Appetite(刺激你的食欲)
如果你有很多工作是通过计算机来完成的,那么你一定希望其中的很多事情能够自动地实现.比方说,你希望在文本文件中实现查找和替换的功能,以某一种机制实现照片的重命名以及重新排序的功能,一个小型的数据库甚至是 ...
- 洛谷 P1450 解题报告
P1450.硬币购物 题目描述 硬币购物一共有\(4\)种硬币.面值分别为\(c1,c2,c3,c4\).某人去商店买东西,去了\(tot\)次.每次带\(d_i\)枚\(c_i\)硬币,买\(s_i ...
- display的属性值测试
由于在学习CSS的display的属性值只针对block.inline.inline-block和flex进行过了解,并且自己观察得知列表中li的display属性是list-item,而想要触发BF ...
- 花生日记_花生日记APP下载_花生日记邀请码
花生日记 国内领先的社交电商导购分享平台. 独创社交电商3+模式,社交+电商+社群,上线1个月注册用户超百万.合作商家涵括各个类目以及平台.为数万宝妈提供月收入3000以上兼职收入. 微信扫描下方二维 ...
- vue的生命周期钩子
生命周期过程: new vue() :vue实例进行初始化,读取所有生命周期函数,并没有执行(不会调用) beforeCreate():创建前,读取属性,计算属性,添加set/get,读取watch ...
- 创建ndarray
Numpy最重要的一个特点就是其N维数组对象(即ndarray),该对象是一个快速而灵活的大数据集容器,是一个通用的同构数据多维容器,也就是说,其中的所有元素必须是相同类型的. 创建数组最简单的方法就 ...
- Ruby类
Ruby类 类定义 #!/usr/bin/ruby class Sample def hello puts "Hello Ruby!" end end # 使用上面的类来创建对象 ...
- 解决MyEclipse注册失败的问题
https://jingyan.baidu.com/article/acf728fd49519ff8e410a361.html
- Sequel自动生成Select语句
Sequel 是 Mac 上的一款不错的 mysql 可视化编辑, 它有一个非常好的功能是可以定制自己的插件, 这就是Bundles. 利用这个功能可以写出自己常用的一些sql. 查询语句是最常用的, ...
- 深入出不来nodejs源码-编译启动(1)
整整弄了两天,踩了无数的坑,各种奇怪的error,最后终于编译成功了. 网上的教程基本上都过时了,或者是版本不对,都会报一些奇怪的错误,这里总结一下目前可行的流程. node版本:v10.1.0. 首 ...