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

单一职责原则(SRP)

目录

1、定义

2、优点

3、原则的重要性

4、 示例

5、注意事项

单一职责原则(Single Responsibility Principle, SRP)是面向对象设计中的一项重要原则,属于 SOLID 原则之一。它的核心思想是:一个类应该只有一个引起它变化的原因,换句话说,每个类应该仅有一个职责。

1、定义

每个类应该专注于完成一个功能或职责,避免将多个职责耦合在一起。

2、优点

(1)提高可维护性:职责单一使得类更简洁,修改时风险降低。
(2)增强可读性:更容易理解类的用途和功能。
(3)促进代码复用:独立的职责可被多个类或模块复用。
(4)低耦合:减少类之间的依赖,便于测试和扩展。

3、原则的重要性

(1)可维护性

         当一个类有多个职责时,修改一个职责可能会影响到其他职责。遵循 SRP 可以使得类的修改和维护更简单,降低出错的概率。

(2)可读性

         单一职责的类通常更简洁、更易于理解,使得其他开发者可以快速掌握类的功能。

(3)可测试性

         有着单一职责的类更容易进行单元测试,因为测试每个类时,只需关注其单一职责,避免了测试多个功能的复杂性。

(4)低耦合

         遵循 SRP 的设计通常会导致低耦合的系统架构,使得系统的组件间依赖关系减少,从而提高系统的灵活性。

4、 示例

 假设有一个用户类,它同时包含用户信息和发送电子邮件的功能

public class User {private String name;private String email;public User(String name, String email) {this.name = name;this.email = email;}public void sendEmail(String message) {// 发送电子邮件的逻辑}// 其他用户相关的方法}

   根据单一职责原则,可以将发送邮件的功能抽象到一个单独的类中:

   public class User {private String name;private String email;public User(String name, String email) {this.name = name;this.email = email;}// 其他用户相关的方法}public class EmailService {public void sendEmail(User user, String message) {// 发送电子邮件的逻辑}}

5、注意事项

 (1)应用单一职责原则时,保持合理的类的粒度,不要过度拆分类。

 (2)考虑职责的变更频率,如果某些功能很少变动,可以选择将其合并。

http://www.lryc.cn/news/423595.html

相关文章:

  • 骨传导耳机怎么选?分享五款资深用户都说好的骨传导耳机!
  • 【计算机网络——分组延时,丢失,吞吐量】
  • 使用1panel 申请证书配置雷池站点
  • 4章7节:用R做数据重塑,数据去重和数据的匹配
  • 大数据面试SQL(七):累加刚好超过各省GDP40%的地市名称
  • 建议收藏!这4款设计师常用的素材管理软件,助你工作效率翻倍!
  • 用于NLP领域的排序模型最佳实践
  • 域名未备案的支付平台遭遇大攻击怎么办
  • 【NI-DAQmx入门】LabVIEW数据采集基础应用程序框架
  • 海山数据库(He3DB)源码详解:CommitTransaction函数源码详解
  • 【网络】传输层TCP协议的报头和传输机制
  • 【活动报名】打造编程学习“知识宝库”:高效笔记记录与整理指南
  • 使用Arduino IDE生成带有bootloader的烧录文件
  • 搭建高可用OpenStack(Queen版)集群(九)之部署nova计算节点
  • C# 字符串扩展方法
  • JookDB和MobaXterm下载安装使用
  • Docker安装Nacos(详细教程)
  • Pandas:提供了快速、灵活和表达式丰富的数据结构。
  • 强!小目标检测全新突破!检测速度快10倍,GPU使用减少73.4%
  • 重修设计模式-创建型-原型模式
  • S71200 - 编程 - 笔记
  • 【项目】畅聊天地博客测试报告
  • 【Next】全局样式和局部样式
  • 关于Docker的详细介绍
  • 一台佳能G3811彩色喷墨打印机打印没颜色报5200的维修记录
  • 【LeetCode】452.用最少数量的箭引发气球
  • 网络安全流程规范文件解读(安全专业L1级)
  • Java、python、php版的邮件发送与过滤系统的设计与实现 (源码、调试、LW、开题、PPT)
  • st算法求RMP
  • 零基础学习Redis(1) -- Redis简介