博客
关于我
面向对象设计原则 单一职责原则(Single responsibility principle)
阅读量:398 次
发布时间:2019-03-05

本文共 825 字,大约阅读时间需要 2 分钟。

单一职责原则(SRP)是面向对象编程中的一个核心原则,它强调一个类或模块应该只有一个发生变化的原因。这个原则由罗伯特·C·马丁在《敏捷软件开发:原则、模式和实践》一书中提出了。

很多程序员可能对职责的概念有直观的理解,但真正理解单一职责原则却并不容易。职责的定义是类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就承担了多于一个的职责,这就违反了单一职责原则。

以数据访问层(DAL)类为例,假设我们有一个查询字段需要添加,以及一个删除操作需要删除部分子记录。从DAL的角度来看,这两个操作看起来像是两个不同的职责。然而,当我们从业务逻辑层(BLL)的角度来看时,DAL类的职责就变得清晰了——它的唯一职责是负责实体与数据库的交互。

单一职责原则的核心在于从外部调用者的角度来看一个类的职责。一个类的职责应该是一组紧密相关的功能。如果一个类承担了多于一个的职责,这些职责就会耦合在一起,导致设计的脆弱性。当一个职责发生变化时,可能会影响其他职责。同时,职责的耦合会降低类的复用性。

因此,我们通常不会将四种不同的数据库操作分别放置在四个不同的类中。我们应该让DAL类只负责数据库交互,而不是同时处理查询和删除操作。

单一职责原则并不是一条必须严格遵守的规则,而是要根据具体的场景和需求进行合理的分析。如果让一个类承担多于一个的职责,当且仅当这些职责是密切相关的,并且无法通过组合其他类来实现时,这种情况才是可行的。

很多程序员在实践中可能会忽略单一职责原则,认为遵守它会增加代码的复杂性。然而,真正理解单一职责原则的人都会意识到,它实际上是在追求代码的简洁性和可维护性。只有当一个类的职责明确单一时,我们才能确保代码的设计不会因为一个小的变化而导致大范围的影响。

单一职责原则的真正价值在于帮助我们建立清晰的类的边界。一个类的职责应该是从外部调用的角度来看的。如果我们能确保每个类都只有一个明确的职责,那么我们的代码设计就会更加稳健和可靠。

转载地址:http://awozz.baihongyu.com/

你可能感兴趣的文章
OAuth2.0_介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记137
查看>>
OAuth2.0_完善环境配置_把资源微服务客户端信息_授权码存入到数据库_Spring Security OAuth2.0认证授权---springcloud工作笔记149
查看>>
OAuth2.0_授权服务配置_Spring Security OAuth2.0认证授权---springcloud工作笔记140
查看>>
OAuth2.0_授权服务配置_令牌服务和令牌端点配置_Spring Security OAuth2.0认证授权---springcloud工作笔记143
查看>>
OAuth2.0_授权服务配置_客户端详情配置_Spring Security OAuth2.0认证授权---springcloud工作笔记142
查看>>
OAuth2.0_授权服务配置_密码模式及其他模式_Spring Security OAuth2.0认证授权---springcloud工作笔记145
查看>>
OAuth2.0_授权服务配置_资源服务测试_Spring Security OAuth2.0认证授权---springcloud工作笔记146
查看>>
OAuth2.0_环境介绍_授权服务和资源服务_Spring Security OAuth2.0认证授权---springcloud工作笔记138
查看>>
OAuth2.0_环境搭建_Spring Security OAuth2.0认证授权---springcloud工作笔记139
查看>>
oauth2.0协议介绍,核心概念和角色,工作流程,概念和用途
查看>>
OAuth2授权码模式详细流程(一)——站在OAuth2设计者的角度来理解code
查看>>
oauth2登录认证之SpringSecurity源码分析
查看>>
OAuth2:项目演示-模拟微信授权登录京东
查看>>
OA系统多少钱?OA办公系统中的价格选型
查看>>
OA系统选型:选择好的工作流引擎
查看>>
OA让企业业务流程管理科学有“据”
查看>>
OA项目之会议通知(查询&是否参会&反馈详情)
查看>>
OA项目之我的会议(会议排座&送审)
查看>>
OA项目之我的会议(查询)
查看>>
OA项目之我的审批(会议查询&会议签字)
查看>>