设计模式笔记:单一职责原则(SRP, Single Responsibility Principle)
1. 单一职责原则核心思想
一个类应该有且只有一个变化的原因。
2. 为什么引入单一职责原则
单一职责原则将不同的职责分离到单独的类,每一个职责都是一个变化的中心。
在SRP中,把职责定义为变化的原因。
当需求变化时,将通过更改职责相关的类来体现。如果一个类拥有多于一个的职责,则多个职责耦合在一起,会有多于一个原因来导致这个类发生变化。一个职责的变化可能会影响到其他的职责,另外,把多个职责耦合在一起,影响复用性。
3. 单一职责原则的优点
(1)降低类的复杂度;
(2)提高类的可读性,提高系统的可维护性;
(3)降低变更引起的风险(降低对其他功能的影响)。
4. 单一职责原则实现
单一职责原则关键点:要求接口的职责单一,从而实现该接口的类的职责单一。
Socket实现类的职责分离
IDataChannel职责:数据通信
IConnection职责:连接管理
SocketImplementation:两个职责耦合,这不是所希望的,但或许是必要的。
5. 单一职责原则重构
业务规则和持久化两个职责应该分开:业务规则往往会频繁变化,而持久化的方式却不会如此频繁的变化,并且变化的原因完全不同。
违反SRP原则的重构可采取设计模式:外观模式(Facade)、代理模式(Proxy)或数据访问对象(DAO)。
6. 使用单一职责原则的注意点
(1)单一职责最难划分的是职责。
(2)单一职责原则提出标准:用职责和变化原因来衡量接口或类设计的是否优良,但是职责和变化原因都是不可度量的,因项目、环境而异。
(3)接口一定要做到单一职责,类的设计尽量做到只有一个原因引起变化。
分类:
设计模式
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构