软件设计之 单一职责原则(SRP)

从模组到集装箱:手把手拆解一个储能BMS的软硬件架构设计与通信组网 本文深入解析储能BMS的软硬件架构设计与通信组网,从电芯采样到系统集成的全链条技术实现。详细介绍了三级硬件架构(AFE、CMU、BMU)的设计要点,以及软件分层实现中的驱动层、应用层核心算法和通信协议栈。通过实战案例分享CAN网络搭建、调试工具链和系统验证测试经验,为储能系统开发提供实用指导。 阅读详情
单一职责原则:就一个类而言应该仅有一个引起它变化的原因(ASD)。

笔者刚学编程的时候,是学c语言入门的。c语言是面向过程语言,刚开始习惯了,到现在写程序也会被面向过程思想所影响。
到了面向对象编程(java)的时候,很自然地就会给一个类加入各种各样的功能,于是在一个类中写入各种各样的代码。
但是这样做的弊端很明显,如果一个类的职责过多,就相当于把这些职责耦合在一起,一个职责的改变可能会抑制或改变其他职责的能力。这种耦合的设计会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。
如果把所有的功能都写同一个类中,那么这个类就会高度耦合,里面的代码一环扣一环,如果要更改其中一处代码,很可能会牵一发动全身。改一处地方会影响到很多其他地方,会给后期维护代码带来极大的麻烦,而且还可能会导致出现各种bug。

软件设计真正要做的许多内容,就是发现职责并把那些职责不同的相互分离。
往往我们写程序的时候,如果有多于一个动机去改变一个类的话,那么这个类就具有多于一个的职责。
STM32CubeMX定时器配置 因为只有当 CH2 处于 输入模式 时,硬件才能把这根脚送进滤波器(TI2FP2通道之前要滤波),再生成 TI2FP2 这条支路供 Slave-Mode 控制器使用,也就是说TI2FP2 并不是“独立存在”的,但在CubeMX配置时:如下图,我们只设置Slave Mode和TI1FP1,之后,CH1就自动配置为 Input Capture 了,下图发现,Channel1只能 Input Capture 或者Disable。哪来的主定时器和从定时器呢?把待测 PWM 的高电平当“门”,连接到ETR。 阅读详情

相关推荐

直线电机驱动技术原理与应用解析

直线电机作为直接电能-直线运动转换装置,其核心原理基于电磁感应定律和洛伦兹力公式。通过三相交流电在定子绕组中产生行波磁场,与动子永磁体相互作用实现精准推力控制。相比传统旋转电机传动系统,直线电机具有零传动间隙、高动态响应(加速度可达10g)和微米级定位精度等技术优势,这使其成为半导体光刻机、精密数控机床等高端装备的关键驱动部件。现代直线电机驱动单元通常采用三环控制架构(电流环、速度环、位置环),配合SiC功率器件和高分辨率光栅反馈,实现纳米级运动控制。随着模块化设计和直接冷却技术的发展,直线电机正朝着更高功

weixin_26802933的博客 259

软件设计原则之SRP:单一职责原则

本篇介绍软件设计原则之一SRP:单一职责原则。 SRP:单一职责原则 一个类应该只有一个发生变化的原因。 Why 为何把职责分离到单独的类中很重要呢?因为每一个职责都是变化的一个轴线。当需求变化时,该变化会反映为类的职责变化。如果一个类承担了多于一个职责,那么引起它变化原因就会有多个。 如果一个类承担的职责过多,就等于把这些职责耦合在了一起。一个职责的变化可能会削弱或者抑制这个类完成其他...

coderidea 631

ElaticSearchUtil工具类封装

package com.xxx.util; import org.elasticsearch.action.admin.cluster.state.ClusterStateResponse; import org.elasticsearch.action.admin.indices.analyze.AnalyzeAction; import org.elasticsearch.action.ad

会飞的狼 6295

java类中的alias_Mybatis为实体类定义别名typeAliases

Cause: java.lang.ClassNotFoundException: Cannot find class: _Userat org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:23)at org.apache.ibatis.session.SqlSessionFactoryB...

weixin_30675619的博客 588

无网环境也能玩转DBeaver?手把手教你离线安装与ClickHouse连接(附实测jar包)

本文详细介绍了在无网环境下如何离线安装DBeaver并配置ClickHouse连接的完整指南。通过准备必备工具如DBeaver安装包、ClickHouse JDBC驱动及Maven本地仓库,确保在物理隔离环境中实现数据库管理。文章包含详细的安装步骤、驱动配置和性能优化建议,帮助开发者在严格网络限制下高效工作。

weixin_42635064的博客 375

手把手教你用LDR9201芯片DIY高性能Type-C耳机转接头(附电路图)

本文详细介绍了基于LDR9201芯片DIY高性能Type-C耳机转接头的完整实战教程。从芯片选型、电路设计、元器件采购到焊接调试,手把手指导如何打造一个免驱兼容、支持高解析度音频且可通过EEPROM深度定制功能的专属转接头。重点解析了LDR9201作为高度集成的USB音频控制器SoC的优势,并提供了核心电路图与配置指南,适合电子爱好者和硬件开发者实践。

jump7的博客 355

软件设计原则----单一职责原则(SRP)

陈述: 就一个类而言,应该只有一个导致其变化的原因 分析: 一个职责就是一个变化的轴线。 一个类如果承担的职责过多,就等于将这些职责耦合在一起。一个职责的变化可能会虚弱或者抑止这个类完成其它职责的能力。 多职责将导致脆弱性的臭味。 示例1:    Rect

极简Qt 7388

音视频开发—H264相关概念和压缩原理详解(GOP、宏块、帧内压缩、帧间压缩)

本文讲述了H264相关概念和原理——GOP概念,SPS与PPS,帧内压缩原理,帧间压缩原理,解释了什么是运动补偿,什么运动矢量等等概念

weixin_46999174的博客 3978

软件设计原则之职责单一原则

职责单一原则作为面向对象的SOLID原则之首,可见其重要性了,职责单一原则使得软件系统更易于开发,测试和维护,在设计架构上也体现了高内聚低耦合的特性。 面向对象的S.O.L.I.D 原则 一般来说这是面向对象的五大设计原则,但是,我觉得这些原则可适用于所有的软件开发。 Single Responsibility Principle (SRP) – 职责单一原则 关于单一职责原则,其核心的思

Jeff 的专栏 726

别再死记硬背GNN公式了!用PyTorch Geometric从零实现一个GraphSAGE(附完整代码)

本文通过PyTorch Geometric从零实现GraphSAGE模型,深入解析图神经网络的核心原理与实战应用。文章提供完整代码示例,涵盖环境配置、邻居采样、信息聚合等关键步骤,帮助开发者掌握图表示学习技术,避免陷入公式推导的困境。适合希望将GNN应用于实际项目的中级开发者和学生。

weixin_42530570的博客 346

lammps 案例in文件汇总

进阶案例: 聚乙烯和石墨烯界面pull out模拟代码 反应力场reax/c设置方法及案例解析 石墨烯热导率模拟代码(NEMD方法) 圆锥形SiC纳米磨削单晶硅源代码 高熵合金FeNiCrCoCu纳米压痕模拟代码 fix indent命令实现纳米摩擦及摩擦力计算 Fe原子辐照轰击多层石墨烯模拟代码 铝基石墨烯复合物压缩变形in文件源代码 石墨烯自动卷曲到Fe纳米线模拟源代码 铝/石墨烯复合物结晶过程lammps模

lammps_jiayou的博客 9445

面向对象七大设计原则

每天都在和面向对象打交道,但是我们在应用面向对象的时候感觉自己对面向对象的技术应用是否合理?理解的是否到位?应用是否到位?应用时机是否恰到好处?是否符合软件的发展趋势? 面向对象的应用也有面向对象的原则,一个程序员的编程素质从一个小例子几十行代码就可以展现出来。面向对象编程是面向对象的基础的基础,遵循面向对象的原则编程,编程水平才会大幅度的提高! 面向对象原则综述 一、开...

司马世豪的博客 2015

【26美赛C题】2026美赛数学建模(MCM/ICM)思路解析及代码分享

本文为2026年美国大学生数学建模竞赛(MCM/ICM)C题的解题思路与资源分享。文章提出系统学习数学建模的重要性,强调竞赛考察的是综合建模能力而非单纯计算。针对C题常见的复杂系统评估类问题,作者提供了一套完整的建模框架,包括问题拆解、指标体系构建、数据建模、决策模型等六个阶段。订阅者可获得Python/Matlab双版本代码、论文结构解析、AI辅助建模方法等资源。内容适合准备参加各类数学建模竞赛的学生,特别是希望通过AI技术提升建模效率的参赛者。

一键难忘的博客 1683

【SRP】单一职责原则

SRP(The Single Responsibility Principle)描述了一种设计要求:“对一个类而言,应该只有一类功能相关的职责。SRP经常被误解成:每个模块都应该只做一件事。这也是一个原则,指的是底层实现原则,例如把大函数拆解成功能单一的小函数。这并不是SRP的全部。功能内聚,是指模块内所有元素共同完成一个功能,缺一不可,模块不能再被分割,对于类设计来说,单个类也应保持高内聚,即达到功能内聚,也就是:“对一个类而言,应该只有一类功能相关的职责。

thinking-fish的博客 1339

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

1.1软件设计原则——单一职责:Single Responsibility Principle(SRP)

它规定一个类只有一个发生变化的原因。如果多余一个导致类变更的原因,则违反了SRP。 问题来源: 分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样当修改T1时,不会使职责P2发生故障风险,同理当修改T2时,也不会使P1发生故障。 但是现实中,不管是新手,还是资深程序员,经常会违反,这不仅仅是技术的问题,还有职责扩散,就是因为某种原因,职责P被分化成粒度更细的职责P1...

qq_25097431的博客 190

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

整洁架构SOLID-单一职责原则(SRP)

SRP是SOLID五大设计原则中最容易被误解的一个。也许是名字的原因,很多程序员根据SRP这个名字想当然地认为这个原则就是指:每个模块都应该只做一件事。

贾欣晓的博客 1152

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

软件设计20丨单一职责原则:你的模块到底为谁负责?

今天,我们学习了单一职责原则。单一职责原则讲的并不是一个类只做一件事,它的关注点在于变化。其最初的定义是一个模块应该有且仅有一个变化的原因,后来其定义升级为一个模块应该对一类且仅对一类行为者负责。这个定义从考虑变化升级到考虑变化的来源。单一职责原则,本质上体现的还是分离关注点,所以,它与分离关注点的思考角度是一样的,需要我们将模块拆分成更小的粒度。不过,相比于分离关注点,它会更加具体,因为它需要我们考察关注点的来源:不同的行为者。

qq_53280238的博客 977

SOLID软件设计原则之SRP

本想把SOLID五大原则整理成一篇,放假在即,发现时间有点来不及了,只能分开来写。 要构建一个良好的软件系统,整洁的代码和整洁的架构缺一不可。而我们在实际开发过程中,常常无视设计原则,“随心所欲”地编程,当然,好的软件系统需要工程师经验的积累和认知的升级。 SOLID原则是面向对象软件设计五大原则(SRP、OCP、LSP、ISP、DIP)的首字母缩写,这些原则会让我们的软件更加健壮和稳定,并能...

牧羊女 679

软件设计原则--单一职责原则

1.单一职责原则(SRP--Single-Responsibility Principle) SRP简介:就一个类而言,应该只专注于做一件事和仅有一个引起它变化的原因。 所谓职责,我们可以理解他为功能,就是设计的这个类功能应该只有一个,而不是两个或更多。也可以理解为引用变化的原因,当你发现有两个变化会要求我们修改这个类,那么你就要考虑撤分这个类了。因为职责是变化的一个轴线,当需求变化时,该变化

lzq19931007的专栏 1314

重温设计模式之软件设计原则-单一职责原则

单一职责原则单一职责原则定义应用案例说明 单一职责原则定义 单一职责原则的英文名称是Single Responsibility Principle,简称SRP。SRP的原话解释是:There should never be more than one reason for a class to change. 也就是说一个类,只有一个引起它变化的原因。应该只有一个职责。每一个职责都是变化的一个轴线,如果一个类有一个以上的职责,这些职责就耦合在了一起。 这会导致脆弱的设计。当一个职责发生变化时,可能会影响其它

old_cai_niao的博客 185

设计模式:单一职责原则(详解)

单一职责原则 (SRP) 是软件设计中的一个重要原则,它要求每个类只负责一个职责。如果类A负责两个不同职责:职责1,职责2。当职责1需求变更而改变A时,可能造成职责2执行错误。降低类的复杂度,一个类只负责一项职责;提高类的可读性,可维护性;降低变更引起的风险;

weixin_52533007的博客 1109

软件设计原则----单一职责原则(SRP)http://blog.youkuaiyun.com/beyondhaven/article/details/6821010

软件设计原则----单一职责原则(SRP) 陈述: 就一个类而言,应该只有一个导致其变化的原因 分析: 一个职责就是一个变化的轴线。 一个类如果承担的职责过多,就等于将这些职责耦合在一起。一个职责的变化可能会虚弱或者抑止这个类完成其它职责的能力。 多职责将导致脆弱性的臭味。 示例1:    Rectangle类具有两个职责: 计算矩形面积

smallgyy的专栏 929

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

单一职责原则(Single Responsibility Principle,SRP)又称单一功能原则。 定义 一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分 There should never be more than one reason for a class to change 职责是指类变化的原因。 一个对象承担了太多的职责缺点: 一个职责的变化可能会削弱或者抑制这个类...

Hokuto·Liu 386

设计模式六大原则之--单一职责原则(SRP)

1.单一职责原则,(Single Responsibility Principle). 定义:There should never be more than one reason for a class to change,应该有且仅有一个原因引起类的变更。 职责:业务逻辑,或者对象能够承担的责任,并以某种行为方式来执行。 2.理解 该原则提出了对对象职责的一种理想期望。对象不

qq_34721308的博客 428

设计原则之单一职责原则(SRP)

为什么80%的码农都做不了架构师?>>> ...

weixin_33716154的博客 330

软件设计原则之SRP单一职责原则

如大家所熟知的,在程序开发过程中, 每位程序员都应该了解许多重要的原则。就如经典的面向对象三原则:封装,继承,多态。

Shan1205的博客 46
上一篇: 设计模式:简单工厂模式
下一篇: 软件设计之 开放-封闭原则(OCP)
javy_codercoder
博客等级 码龄11年 52粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值