设计模式的艺术-单一职责原则

news/2025/1/23 13:18:51/

1.基础知识

  1. 是最简单的面向对象设计原则,它用于控制类的粒度大小。

  2. 一个类只负责一个功能领域中的相应职责。

  3. 单一职责原则的核心思想是:一个类不能太“累”!在软件系统中,一个类(大到模块,小到方法)承担的职责越多,它被复用的可能性就越小,而且一个类承担的职责过多,就相当于将这些职责耦合在一起,当其中一个职责变化时,可能会影响其他职责的运作(高耦合)。

  4. 单一职责原则实现高内聚、低耦合的指导方针,它是最简单但又最难运用的原则,需要设计人员发现类的不同职责并将其分离,这需要设计人员具有较强的分析设计能力和相关实践经验。

  5. 简单理解就是一个类(或函数)只去做跟自己有关的事情不相干的功能去对应类或者控制器中处理,例:有一个用户管理的控制器,它就应该只处理与用户相关的操作,如用户注册、登录、用户信息获取和修改等,而不应该涉及其他不相关的功能,如订单处理或商品管理。

2.如何理解高内聚?

  1. “高内聚” 指的是一个模块或一个类内部的各个元素彼此紧密相关,共同完成一个明确的、相对独立的功能。

  2. 例如一个负责用户认证的类,它的所有方法和属性都应该紧紧围绕用户认证这个核心功能。它内部的代码逻辑紧密,相互协作,只为了高效、准确地实现认证这一目标。

  3. 好处是模块的功能明确、单一,易于理解、维护和测试。当需要修改这个模块的功能时,因为其内部的紧密相关性,可以更有针对性地进行修改,减少对其他模块的影响。

3.如何理解低耦合?

  1. 指的是不同模块或类之间的依赖关系尽可能少,相互之间的联系尽可能简单和松散。

  2. 例如,模块 A 完成功能 A,模块 B 完成功能 B,它们之间的交互通过简单、清晰的接口进行。模块 A 的变化不应该直接导致模块 B 也需要大规模的修改。

  3. 低耦合的优点在于当一个模块需要修改或扩展时,对其他模块的影响较小,系统更具灵活性和可扩展性。各个模块可以独立开发、测试和维护,提高了开发效率。

4.Lumen框架使用到单一职责原则的地方有哪些?

  1. 路由系统:Lumen 的路由文件通常只负责定义路由规则,将不同的 URL 路径与相应的控制器方法进行映射。

  2. 控制器:控制器主要负责接收用户请求,调用相应的服务或模型方法来处理业务逻辑,并将结果返回给客户端。

  3. 模型层:在 Lumen 中,Eloquent 模型通常只负责与数据库表进行映射,定义表结构、字段、关联关系等。例如,User模型主要用于表示用户表,包含$fillable属性来定义可填充的字段,以及通过hasMany、belongsTo等方法定义与其他模型的关联关系,不包含复杂的业务逻辑。

  4. 服务层:服务层的类通常负责处理具体的业务逻辑,将业务规则和操作封装在服务类的方法中。

以上内容为根据书本内容配合搜索引擎整理得来,目的是为了学习,要是有侵权的情况发生,请联系我,我会立即予以删除,谢谢!

一起成长,人生是马拉松,可以跑得慢,但一定要在路上。


http://www.ppmy.cn/news/1565489.html

相关文章

【C++】在线五子棋对战项目网页版

目录 1.Websocket 1.1.Websocket的简单认识 1.2.什么是轮询呢? 1.3.websocket协议切换过程 1.4.websocketpp库常用接口认识 1.5.websocketpp库搭建服务器流程 1.6.websocketpp库搭建服务器 2.mysqlclient库-接口认识 3.项目模块的划分: 4.项目…

试题转excel;word转excel;大风车excel(1.1更新)

更新了大风车excel1.1版本 主要优化在算法层面: 1.0版本试题解析的成功率为95%,现在1.1版本已经优化到解析成功率为99% 一、问题描述 一名教师朋友,偶尔会需要整理一些高质量的题目到excel中 以往都是手动复制搬运,几百道题几…

Git 分支管理与多人协作实战指南

目录 1.分支管理: 1.1.理解分支: 1.2.创建分支 1.3.切换分支 1.4.合并分支 1.5.删除分支 2.合并冲突 3.分支管理策略 分支策略 4.bug分支 5.删除临时分支 git branch -d 和 git branch -D的区别 6.多人协作 6.1.多人协作一 6.2.多人协作二…

运维Tips | 如何在线升级国产 OpenEuler(欧拉) 开源操作系统到最新版本?

[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ] 如何在线升级 OpenEuler 操作系统版本? 简单描述 作者发现 openEuler 系统又更新了一个新的补丁发行版,解决了众多问题,其中就有华为发布的 isula 容器工具更新补丁&#…

vue项目创建与运行(idea)

一、安装vue 在安装完node.js后 使用管理员身份运行命令行,在命令行中,执行如下指令: npm install -g vue/cli 这个过程中,会联网下载,可能会耗时几分钟,耐心等待。 以管理员身份运行cmd检查版本 idea创…

linux 下调试 pac1934 电源监控器

一、环境 imx93 PAC1934 linux 版本:linux-6.6.52 PAC1934 是 microchip 提供的 4 通道高精度电源监控器 二、驱动下载 由于我使用的 linux-6.6.52 版本,pac1934 的 iio 驱动还没合入该版本,于是去官网自己下载; https://w…

STM32更新程序OTA

STM32的OTA(Over-The-Air)更新程序是一种通过无线通信方式,为设备分发新软件、配置甚至更新加密密钥的技术。以下是关于STM32 OTA更新程序的详细介绍: 一、OTA升级流程 STM32的OTA升级流程通常包括以下几个关键步骤:…

chrome游览器JSON Formatter插件无效问题排查,FastJsonHttpMessageConverter导致Content-Type返回不正确

问题描述 chrome游览器又一款JSON插件叫JSON Formatter,游览器GET请求调用接口时,如果返回的数据是json格式,则会自动格式化展示,类似这样: 但是今天突然发现怎么也格式化不了,打开一个json文件倒是可以格…