架构整洁之道-04 设计原则-单一职责SRP

简介: 架构设计原则主要作用是让我们明确如何在类中安排我们的程序和数据结构,以及这些类之间的关系应该如何建立。SOLID原则的目标是创建中层软件架构,满足:容忍改变、易于理解、基础组件可以用在多个软件系统中。

架构设计原则主要作用是让我们明确如何在类中安排我们的程序和数据结构,以及这些类之间的关系应该如何建立。SOLID原则的目标是创建中层软件架构,满足:容忍改变、易于理解、基础组件可以用在多个软件系统中。

单一职责

单一职责原理(Single Responsibility Principle,SRP),单一功能职责。这里的职责是指类变化的原因,单一职责原则规定一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分。即,一个模块有且只能对一个角色负责。

单一职责原则的核心是控制类的粒度大小,将对象解偶,提高其内聚性。

  • 降低类的复杂度。一个类只负责一个职责比负责多项职责要简单得多
  • 提高可读性。复杂度降低,可读性自然就提高了
  • 提高系统的维护性。可读性提高,并且修改一项职责对其他职责影响降低类,就更容易维护
  • 变更引起的风险降低。单一职责如果遇到变更则影响范围也会更小

比如,Phone接口,我们仅对其支持打电话,听音乐,发信息,更换手机壳。更换手机壳功能,这个不应该属于Phone的职责,其更多依赖外部操作去更换。

class Phone  {
    makeCall(){ }
    listenMusic(){ }
    sendMessage(msg:Message) { }
    changeCover() { }
}

为了避免出现因修改一个功能导致其他的功能发生故障,解决方法就是遵循单一职责模式。单一职责原则不只是面向对象编程思想所特有的,只要是模块化的程序设计,都适用单一职责原则。

什么情况会破坏SRP

  • 类的依赖太多
  • 方法有提阿多参数
  • 测试类变得复杂
  • 在一个地方改动影响另外地方
目录
相关文章
|
3月前
|
前端开发 Java 测试技术
使用整洁架构优化你的 Gradle Module
使用整洁架构优化你的 Gradle Module
63 0
|
10月前
|
存储 Go 数据处理
Go 语言整洁架构实践
Go 语言整洁架构实践
73 0
|
6天前
|
消息中间件 监控 API
深入浅出微服务架构设计原则
在软件开发的宇宙中,微服务如星辰般璀璨,引领着分布式系统的航向。本文将带你穿梭于微服务的星系,探索其背后的设计哲学与实践精髓,从服务边界的划分到数据一致性的保障,再到服务的通信与协作,我们将一同揭开微服务架构高效、可扩展且灵活的秘密。
16 4
|
7天前
|
消息中间件 设计模式 API
后端开发中的微服务架构设计原则
【8月更文挑战第13天】在软件工程的世界中,微服务架构已经成为一种流行的设计模式,它通过将复杂的应用程序分解成一组小的服务来简化开发和部署。本文探讨了微服务背后的设计理念,以及如何在后端开发实践中应用这些原则来构建可扩展、灵活且易于维护的系统。我们将深入讨论服务的划分、通信协议的选择、数据一致性的保障以及容错性策略的实施,旨在为后端开发人员提供一套实用的微服务架构设计指导。
18 1
|
26天前
|
NoSQL Redis UED
业务架构问题之在流程建模中,“定职责”的重要性是什么,流程建模中的交互设计原则是什么
业务架构问题之在流程建模中,“定职责”的重要性是什么,流程建模中的交互设计原则是什么
|
12天前
|
监控 架构师 项目管理
项目管理架构师的角色与职责:构建高效项目交付框架
【8月更文第7天】在当今快速变化的商业环境中,组织需要灵活高效的项目交付机制来应对不断出现的新挑战。项目管理架构师(Project Management Architect, PMA)作为一种新兴的角色,在确保项目成功交付方面扮演着至关重要的角色。本文将探讨PMA的核心职责,以及他们如何通过设计和实施项目管理流程来提高项目的可扩展性和适应性,并通过有效的项目治理来提升团队的整体表现。
30 0
|
3月前
|
数据中心 网络架构 Python
【计算巢】数据中心的网络架构设计原则
【5月更文挑战第31天】探讨数据中心网络架构设计原则:稳定性是基础,需抵御各种挑战;强调扩展性,适应业务发展;追求高效,确保数据传输速度;注重灵活性,灵活应对变化。简单Python代码示例展示网络节点连接。设计时需具备长远眼光,综合考虑技术方案,以构建坚固高效的信息桥梁。同学们,要持续学习和探索,为信息世界贡献力量!
50 2
|
3月前
|
运维 架构师 安全
架构师养成手册:架构师职责
小米是一名热情的技术爱好者和架构师,他探讨了架构师的角色和职责。主要涉及六个方面:顶层设计,需与企业战略目标对齐,制定架构原则;规划可适应未来变化的企业架构,分析需求并关注技术趋势;全局视角制定可落地的架构方案,兼顾全局与局部优化;技术选型与难题解决,选择合适技术并解决实际问题;关注方案与代码的广度与深度,确保宏观设计与微观实现的统一;同时,架构师还需具备管理能力,包括团队协作、资源调配和风险管理。
104 11
|
3月前
|
监控 安全 API
微服务架构下的API网关设计原则
【5月更文挑战第31天】在本文中,我们将深入探讨微服务架构下API网关的设计原则。API网关作为微服务架构的入口点,其设计至关重要。我们将从性能、安全性、可扩展性等方面进行分析,并提出一些实用的设计建议。
|
3月前
|
存储 缓存 运维
云计算架构设计原则
【4月更文挑战第6天】这篇文章介绍了基于云计算的架构设计六大原则:合理部署、业务持续、弹性扩展、性能效率、安全合规和持续运营。