当前位置: 首页 > news >正文

SRP单一职责原则

软件设计有两个基本准则:高内聚低耦合。内聚性是分析组成一个模块或者类的内部元素之间的相关性。

SRP【Single responsibility】 单一职责原则,强调一个类只有一个引起变化的原因,只有一个职责。

SRP特点

降低类之间的耦合:将不同职责分解为不同的类,降低类之间的依赖关系,提高系统的灵活性。

提高类的可维护性和可复用性:当一个类只有一个职责时,修改该职责不会影响到其他职责,使得类更加稳定,易于维护和复用。

示例代码

不符合 SRP 的代码

public class Employee {public int calculatePay() { }public int reportHours() { }public int save() { }
}

使用SRP优化后的代码

public class EmployeeFacade {public int calculatePay() { }public int reportHours() { }public int save() { }
}public class PayCaclculatePayer {public int calculatePay() { }
}
public class HourReporter {public int reportHours() { }
}
public class EmployeeSaver {public int save() { }
}

拆分类的时机

出现下面情况的时候,意味着类不符合单一职责,需要拆分类:

1、代码行数、函数和属性过多。

2、依赖很多其他类。

3、很难命名类名。

4、大量方法集中操作某几个属性。

扩展

单一职责原则主要讨论函数和类之间的关系。单一职责也适用于其他层面:

在组件层面,是划分组件之间关系的原则。

在软件架构层面,是划分边界的原则。

当然,单一职责也可以应用于函数层面。

总之,在整个软件设计生命周期中,都需要设计成高内聚,从而更易维护、扩展和复用。

参考

《架构整洁之道》-- Robert C.Mattin

《架构师的自我修炼》 – 李智慧

《设计模式之美》 – 王争

http://www.xdnf.cn/news/381295.html

相关文章:

  • 备战菊厂笔试3
  • short变量赋值为32768, 实际为什么是-32768?不同语言的不同进制字面量?字面量?编程语言的基本类型?
  • Java、Python、NodeJS等开发环境安装及配置镜像加速到国内源
  • .Net HttpClient 使用准则
  • 【脑机接口临床】脑机接口手术的风险?脑机接口手术的应用场景?脑机接口手术如何实现偏瘫康复?
  • RT-Thread 深入系列 Part 6:高性能与低功耗优化策略
  • 智能库室联管联控系统|智能兵器室门禁管理系统
  • AI日报 · 2025年5月10日|OpenAI“Stargate”超级数据中心项目掀起美国各州争夺战
  • Dify+Ollama+Deepseek+BGE-M3来搭建本地知识库实操
  • C++ Vector深度易错点指南(临时抱佛脚)(基础用法;进阶;高级;实战)
  • PyTorch API 1 - 概述、数学运算、nn、实用工具、函数、张量
  • 【LangChain全景指南】构建下一代AI应用的开发框架
  • 数字相机的快门结构
  • not a genuine st device abort connection的问题
  • 实现三个采集板数据传送到一个显示屏的方案
  • null 的安全操作 vs 危险操作
  • Linux环境下基于Ncurses开发贪吃蛇小游戏
  • Java 内存模型 JMM
  • Edububtu 系统详解
  • Exploring Temporal Event Cues for Dense Video Captioning in Cyclic Co-Learning
  • 一个好用的快速学习的网站
  • python打卡day21
  • JavaScript基础-作用域概述
  • JDK10新特性
  • Apache Shiro 1.2.4 反序列化漏洞(CVE-2016-4437)
  • 二进制与十六进制数据转换:原理、实现与应用
  • DAY 21 常见的降维算法
  • 简述Web和HTTP
  • centos7.9上安装 freecad 指定安装位置
  • WinCC V7.2到V8.0与S71200/1500系列连接通讯教程以及避坑点