转载自 面象对象设计6大原则之一:单一职责原则

单一职责原则(SRP),The Single Responsibility Principle

定义

一个类的修改只能有一个被修改的原因。

通俗地讲,就是一个类只能负责一个职责,修改一个类不能影响到别的功能,也就是说只有一个导致该类被修改的原因。我们写代码的都知道尽量要做到低耦合、高内聚的特性,单一职责原则正是保证了类与类之间的低耦合性。一个类如果承担过多的职责,就会有很多原因来导致这个类的被修改,就有很大可能性影响到别的功能。

单一职责原则,看起来是一个非常简单的原则,但真正实践起来也并非易事,因为职责的联合在实际当中是经常遇到的事,也不能随便地去拆分类去适配单一职责模式,所以如何从这些联合的职责中合理地把职责分隔出来更合适的遵守单一职责原则要好好考虑。

看看下面这这个接口是否符合单一职责原则呢?

public interface UserInterface {

void saveUser(User user);

User getUser(long id);

void updateUserBalance(long id, BigDecimal balance);

BigDecimal getUserBalance(long id);

}

这是一个用户接口,提供四个方法:保存用户、获取用户、更新用户余额、获取用户余额,很显然用户个人信息与用户的账户余额是两回事,这样设计在一起耦合非常高,不利于扩展,也不符合单一职责原则,我们可以把它折分成两个,一个为用户信息接口,一个账户接口,如下

public interface UserInterface {

void saveUser(User user);

User getUser(long id);

}

public interface AccountInterface {

void updateUserBalance(long id, BigDecimal balance);

BigDecimal getUserBalance(long id);

}

这样分开来,是不是就符合了单一职责原则,类的复杂性和耦合性也降低了,即使用户接口或账户接口加减接口也不影响别的接口实现类。

所以,单一职责原则可以总结为以下优势:

1、低耦合性,影响范围小。

2、类复杂度降低,职责分明,提高了可读性。

3、职责单一,利于维护。

面象对象设计6大原则之一:单一职责原则相关推荐

  1. 面象对象设计6大原则之四:接口隔离原则

    转载自 面象对象设计6大原则之四:接口隔离原则 接口隔离原则(ISP),The Interface Segregation Principle 定义 客户端不需要强迫依赖那些它们不需要的接口. 类与接 ...

  2. 面象对象设计6大原则之六:迪米特原则

    转载自 面象对象设计6大原则之六:迪米特原则 迪米特原则(LOD),The Law Of Demeter,也称为最少知识原则 定义 一个对象应该对其他对象有最少的了解. 也就是说一个类耦合和调用一个类 ...

  3. 面象对象设计6大原则之五:依赖倒置原则

    转载自 面象对象设计6大原则之五:依赖倒置原则 依赖倒置原则(DIP),The Dependency Inversion Principle 定义 1.高层模块不应该依赖低层模块,两都应该依赖于抽象. ...

  4. 面象对象设计6大原则之三:里氏替换原则

    转载自 面象对象设计6大原则之三:里氏替换原则 里氏替换原则(LSP),The Liskov Substitution Principle 定义 所有引用基类的地方必须能透明地引用其子类的对象,即子类 ...

  5. 面象对象设计6大原则之二:开放封闭原则

    转载自 面象对象设计6大原则之二:开放封闭原则 开放封闭原则(OCP),The Open Closed Principle 定义 一个软件的实体,包括类.方法.模块.应该对扩展开放,对修改关闭. 也就 ...

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

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

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

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

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

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

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

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

最新文章

  1. openStreetMap学习网站
  2. 2020了,最流行的密码依旧是123456
  3. java dom创建xml文件_Java 如何使用dom方式读取和创建xml文件
  4. win10查看上次开机时间
  5. 移动端h5监听浏览器返回操作(目前在react项目中用到)
  6. FPGA与DSP区别
  7. 对if...else if...的理解
  8. 20155238 2016-2017-2 《Java程序设计》第六周学习总结
  9. jmeter-如何进行参数化-循环读取参数
  10. Linux 进程间通信的六种机制
  11. samba用户密码改变,怎么访问?
  12. python之sqlalchemy的使用
  13. Latex:图片排版的位置参数【htbp】
  14. 二进位注册文件_手工添加注册表项文件reg执行出错,您在注册表编辑器中只能导入二进位注册文件...
  15. CentOS 7 - Securing OpenSSH(一)
  16. linux sed 多个条件,sed多条件匹配
  17. 什么是股票量化交易策略?
  18. 订单拆单-产品逻辑分析研究
  19. 3D云打印系统OctoPrint,中文化详细图文教程
  20. 1.7 编程基础之字符串 15 整理药名 python

热门文章

  1. [JavaWeb-Servlet]Servlet3.0注解配置
  2. [设计模式]开闭原则
  3. python可变参数和关键字参数位置_python中函数的默认参数和可变长参数如何排列?...
  4. linux下I2C驱动发送IO时序,I2C驱动情景分析——怎样控制I2C时序
  5. 51 NOD 1363 最小公倍数之和 (欧拉函数思维应用)
  6. 【ZJOI2015】幻想乡 Wi-Fi 搭建计划【几何】【贪心】【dp】
  7. [ARC072C]Alice in linear land(dp,贪心)
  8. CF605C. Freelancer's Dreams
  9. C. The Sports Festival
  10. Strange Partition CodeForces - 1471A