单一职责原则

如果有一个用户管理类,类图如下

我想,任谁也能看的出这个接口设计的有问题,用户的属性和用户的行为没有分开,应该把用户的信息抽取成一个业务对象,把用户的行为抽取成一个业务对象,按照这个思路对类图进行修正,如下图所示

其实,在实际使用中我们更倾向于使用两个不同的接口: 一个IUserBO,一个IUserBiz

单一职责原则定义

应该有且仅有一个原因引起类的变更

单一职责原则的好处:

  1. 类的复杂性降低,实现什么职责都有清晰明确的定义
  2. 可读性提高,复杂性降低了,可读性当然就提高了
  3. 可维护性提高,可读性提高了,当然更容易维护了
  4. 变更引起的风险降低.变更是必不可少的,如果接口的单一职责做的好,一个接口修改只对相应的实现类有影响,对其他类无影响,这对系统的扩展性、维护性都有非常大的帮助

单一职责原则适用于接口、类,同样也适用于方法.


单一职责原则是非常优秀的,但是在实际使用中受很多因素的制约

建议,接口一定要做到单一职责,类的设计尽量做到只有一个原因引起变化

6大设计原则之单一职责原则相关推荐

  1. Java设计原则之单一职责原则、开闭原则、里氏代换原则

    文章目录 面向对象设计原则概述 单一职责原则 开闭原则 里氏代换原则 面向对象设计原则概述 软件的可维护性(Maintainability)和可复用性(Reusability)是两个非常重要的用于衡量 ...

  2. 设计原则:单一职责原则

    单一职责原则(SRP) 单一职责原则的英文是 Single Responsibility Principle,缩写为 SRP.这个原则的英文描述是这样的:A class or module shoul ...

  3. 经典设计原则:单一职责原则(SRP)

    本文详解设计原则中的单一职责原则,目的还是提高代码的可读性.可扩展性.复用性.可维护性等. 目录 1. 单一职责原则(SRP) 2. 如何理解单一职责原则? 3. 如何判断类的职责是否足够单一? 4. ...

  4. 面向对象的七种原则:单一职责原则,开放关闭原则

    我们的知识星球马上就要开始更新设计模式了,在更新设计模式之前,我们是不是需要做一些准备呢?否则设计模式中一些遵循的原则大家会一头雾水,所以我今天来给大家说一些面向对象的七种原则,有人说是6种有人说是7 ...

  5. SOLID原则:单一职责原则(SRP)

    SOLID:SOLID 原则并非单纯的1个原则,而是由5个设计原则组成,它们分别是:单一职责原则.开闭原则.里式替换原则.接口隔离原则和依赖反转原则,SOLID 由5个设计原则的头一个字母组成. 如何 ...

  6. 设计模式六大原则(一)----单一职责原则

    设计模式六大原则之[单一职则原则] 一.什么是单一职责原则 首先, 我们来看单一职责的定义. 单一职责原则,全称Single Responsibility Principle, 简称SRP. A cl ...

  7. 接口隔离原则和单一职责原则区别

    接口隔离原则和单一职责原则区别 单一职责原则是备受争议的原则,根据不同的业务逻辑,它会将系统功能模块划分成不同种类,产生多样的接口,同时每个接口尽量只包含一个功能(方法). 而产生争议的原因就是这个业 ...

  8. 设计模式---面向对象设计原则之单一职责原则

    单一职责原则是最简单的面向对象设计原则,它用于控制类的粒度大小.单一职责原则定义如下: 单一职责原则(Single Responsibility Principle, SRP):一个类只负责一个功能领 ...

  9. 六大设计原则之单一职责原则(SRG)

    在做代码练习或者开发的过程中,我们会发现自己写的类越来越大,该类的功能也越来越多.有一些开发者包括之前的我看到自己写的类够大,功能够多是往往会充满自豪感.但是当某个功能需要做一个小改动时,就会发现整个 ...

最新文章

  1. python event多线程回调
  2. 3.逆向分析Hello World!程序-下
  3. 数据中心或许会成为未来5G最强大的技术支撑
  4. c 一般处理程序 ajax,Ajax调用一般处理程序数据
  5. nyoj117求逆序数 并归排序法
  6. 单例模式(Singleton)小记
  7. SAP Netweaver和Hybris的数据库层
  8. ksoap2-android Project
  9. 利用Python实现Shp格式向GeoJSON的转换!
  10. Android精品开源项目整理_V20140221(持续更新中..)
  11. oracle脱敏脚本
  12. Unity3D教程笔记——unity初始02
  13. jquery gotop插件
  14. Tinker 合并及加载补丁过程源码分析 (三)
  15. 输入一个数字n输出n以内的素数
  16. 【开讲啦】20150814 余秋雨:寻找远方的自己
  17. 使用腾讯云sms实现短信验证功能
  18. 多图表数据分析PPT图表合集
  19. Linux查看文件的几种命令比较:vi、vim、cat、less
  20. Spring定时任务注解说明

热门文章

  1. arm shellcode 编写详析2
  2. vue保存图片到手机相册_手机照片误删了怎么找回?这三个方法轻松搞定,亲测有效...
  3. 广西 启动计算机教案,广西版六年级下册信息技术教案.docx
  4. linux 安装mysql8_MySQL 8.0与MariaDB 10.4,谁更易于填坑补锅?
  5. spring揭秘_被问到了! Spring 和 Spring Boot 之间到底有啥区别?
  6. java将mysql数据写入到txt_java 追加写入数据到txt
  7. 本机连接opc server有部分数据不刷新_实时数据库PI在企业MES系统中的应用
  8. mysql选取最小值_MySQL:选择x最小值
  9. 【LeetCode笔记 - 每日一题】423. 从英文中重建数字(Java、字符串、偏思路)
  10. 【LeetCode笔记】84. 柱状图中最大的矩形(字符串、单调栈)