GoF之单一职责原则

C++进阶篇|C++软件设计思想、方法与模式 C++软件设计思想、方法与模式 软件设计思想与原则 从面向对象谈起: 为什么要面向对象设计? 面向对象设计最大的优势在于:抵御变化 底层思维:向下,如何把握机器底层从微观理解对象构造。 抽象思维:向上,如何将我们的周围世界抽象为程序代码。 软件设计通常具有固有的复杂性,了解软件设计复杂性的诱因是处理复杂性的关键。 那如何解决复杂性呢? •分解 人们面对复杂性有一个常见的做法:即分而治之,将大问题分解为多个小问题,将复杂问题分解为多个简单问题。 •抽象 更高层次来讲,人们处理复杂性有一个通用的技术,即抽象。 阅读详情

     

      上一个开闭原则是设计模式的理想主义,所有的模式和原则都在向着那个方向靠近,就像是我们的共同目标——共产 主义一样。今天来看一个比较简单,也好理解,并且在生活中我们无意中常用的一个原则。

单一职责原则(Single Responsibility Principle)

定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责,应该仅有一个引起它变化的原因

   说到单一职责原则,就让我想到了GTD的核心理念——清空大脑,只做一件事。就是把自己的精力和时间投入到单一的事物上,就可以高效的完成,不会做这件事想着那件事。在软件编程中,谁也不希望因为修改了一个功能导致其他的功能发生故障。而避免出现这一问题的方法便是遵循单一职责原则。虽然单一职责原则很简单,并且也很常见,但它却被列为设计模式六大原则之一也是有原因的吧?因为有职责分离。所谓职责分离,就是因为某种原因,职责P被分化为粒度更细的职责P1和P2。

遵循单一职责原的优点有:

1.可以降低类的复杂度,一个类只负责一项职责,其逻辑肯定要比负责多项职责简单的多;

2.提高类的可读性,提高系统的可维护性;

3.变更引起的风险降低,变更是必然的,如果单一职责原则遵守的好,当修改一个功能时,可以显著降低对其他功能的影响。

需要说明的一点是单一职责原则不只是面向对象编程思想所特有的,只要是模块化的程序设计,都需要遵循这一重要原则。

用一个简单例子说就是:一对一的关系,玩儿的时候就做玩儿的事,学习的时候就学习。

华硕三频万兆分布式路由组网实战:从AiMesh 2.0到全屋Wi-Fi 6覆盖 Mesh组网是解决大户型Wi-Fi覆盖难题的主流方案,其核心原理是通过多个节点构建网状网络,实现设备间的无缝漫游。在技术层面,Wi-Fi 6标准、三频设计(包括专属回程频段)和有线回程等技术,共同提升了网络的带宽、稳定性和抗干扰能力。这些技术的工程价值在于,能够为多设备并发、高带宽应用(如4K/8K流媒体、在线游戏、内网文件高速传输)提供可靠支撑。具体到应用场景,例如利用华硕AiMesh 2.0系统,配合三频万兆分布式路由器,可以实现智能的设备连接与负载均衡。通过合理规划节点位置、优先采用有线回程,并进行Q 阅读详情

相关推荐

医疗AI新思路:为什么Graph Neural Network能改善气道分割的漏检问题?

本文探讨了Graph Neural Network(GNN)在医疗AI领域改善气道分割漏检问题的创新应用。通过分析3D UNet等传统方法的局限性,揭示了GNN在图结构建模中的独特优势,特别是在捕捉细小末梢支气管方面的突破性表现。文章详细介绍了UNet-GNN混合架构的设计原理、实验性能对比及优化方向,为CT影像分析提供了新思路。

weixin_30379531的博客 224

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

文章目录设计模式(Gof)六大原则之一单一职责原则单一职责原则的定义单一职责原则的优点 设计模式(Gof)六大原则之一单一职责原则 这是一个备受争议的原则,跟人吵架的时候这个是屡试不爽的一个梗。 为什么会备受争议呢?怎么就能吵起来呢?主要就是对职责如何定义,什么是类的职责,以及怎么划分类的职责。 举个栗子:我们新职课的老师对学生有很多的工作要做:例如了解个人信息、每天的学习情况、记录考勤;回答学 生问题,帮助解决bug,重难点串讲;行业经验分享等。 如果将这些工作交给一位老师负责显然不合理,正确的做法是不同

LLLlucky_boy的博客 287

别再乱设阻尼了!Abaqus动力分析中瑞利阻尼的α和β到底怎么算?

本文深入解析Abaqus动力分析中瑞利阻尼参数α和β的科学计算方法,帮助工程师准确设置阻尼参数以提升仿真精度。详细介绍了基于模态阻尼比的经典计算方法和多模态优化法,并结合工程案例演示参数设置流程,避免常见的阻尼设置误区。

weixin_42634811的博客 731

GoF23-单一职责原则

单一职责原则 单一职责原则概述 对类来说的,即一个类应该只负责一项职责。如类Cola负责两个不同职责:职责1:生产可乐,职责2:销售可乐 当职责1:生产可乐需求变更而改变类Cola时,可能造成职责2:销售可乐执行错误,所以需要将类Cola的粒度分解为:类ProductionCola,类SaleCola 单一职责原则:各司其职 单一职责原则实际应用 应用背景 描绘出一些人正在使用的交通工具的情况 解决方法一 package com.tan.principle.singleresponsibility;

Ther233的博客 578

学习十八-UJA107xA简介及移植-0

目录 1、UJA107xA系列手册 1、介绍 2.2.1 BAT引脚功能 2.4.1 V1、V2稳压器 2.5.1 CAN收发器 3.1 Startup Operation 3.2 Normal Operation 5.1 Attached Files 5.2 NXP UJA107xA Example Software 6、main() 1、UJA107xA系列手册 看完手册关于使用还是没有头绪的,只是想SPI发送指令将V2驱动起来,进而驱动起来CAN收...

m0_56344230的博客 1707

pytorch图像分类篇: 花分类数据集下载和AlexNet网络搭建训练

一、花分类数据集下载 data_setdata_set该文件夹是用来存放训练数据的目录 使用步骤如下: (1)在data_set文件夹下创建新文件夹"flower_data" (2)点击链接下载花分类数据集 (3)解压数据集到flower_data文件夹下 (4)执行"flower_data.py"脚本自动将数据集划分成训练集train和验证集val ├── flower_data ├── flower_photos(解压的数据集文件夹,3670个样本) ...

橙子的博客 8218

GoF设计模式 - 概述

掌握编程语言仅仅意味着掌握了如何给计算机“下命令”,而到底要计算机如何去做,怎么指挥,则是另一个问题——如何编程。设计模式是一套程序员的“武功套路”,它教我们如何去编程。虽然不遵守这个套路也是可以编程的,但是为了做到让整支程序员军团以整齐一致的步伐协调工作,设计模式的存在还是很有必要的。它定义了一系列的“武功套路”以及对应的招式的名称,相当于制定好了行业内的一套规范以及术语,方便程序员军...

weixin_30823001的博客 269

超详细!动态规划详解分析(典型例题分析和对比,附源码)

为啥要使用动态规划?什么时候使用动态规划?以下是我的一些理解和心得,如果你感兴趣,就接着往下看吧。 对您有帮助的话记得给我点个赞哟! 动态规划的基本思想 动态规划(Dynamic Programming,DP)算法通常用于求解某种具有最优性质的问题。在这类问题中,可能会有许多可行解,每一个解都对应一个值,我们希望找到具有最优值的解。 动态规划算法与分治法类似,其基本思想也是将待求解的问题分解成若干个子问题,先求解子问题,然后从这些子问题的解中 得到原有问题的解。与分治法不同的是,动态规划经分解后得到的子问题

qq_44398094的博客 8万+

【Go实现】实践GoF的23种设计模式:SOLID原则

如果把设计模式类比为武侠世界里的武功招式,那么SOLID原则就是内功内力。通常来说,先把内功练好,再来学习招式,会达到事半功倍的效果。

ruanrunxue的博客 550

Simulink开发项1000例实战专栏--实例52:基于Simulink开发一个超导磁储能控制系统,实现对SMES系统的精确控制和优化

需求分析超导磁储能系统(Superconducting Magnetic Energy Storage, SMES)是一种利用超导线圈储存和释放电能的高效储能技术。SMES系统具有响应速度快、能量密度高、循环寿命长等优点,广泛应用于电力系统的调峰填谷、频率调节、电压稳定以及紧急备用电源等领域。本项目将基于Simulink平台,开发一个完整的超导磁储能控制系统,实现对SMES系统的精确控制和优化。我们将详细讲解如何设计和实现该系统,并结合实际应用案例进行说明。

xiaoheshang_123的博客 236

claude code desktop中出现Doesn‘t look like an Anthropic model - expected a gateway model route 解决方案

本文主要介绍了claude code desktop中出现Doesn’t look like an Anthropic model - expected a gateway model route referencing an Anthropic model和Server is busy. Retrying的解决方案,希望能对使用claude code desktop的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 9万+

设计模式七大原则

概述GoF(Gang of Four) GoF是Java基础知识和J2EE框架知识之间一座隐性的"桥"。GoF并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧,让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,GoF反复向你强调一个宗旨:要让你的程序尽可能的可重用。 GoF与J2EE的区别: 1. 设计模式更抽象,...

Nigori_gjh的博客 254

【毕设护航】从0构建YOLOv8犬类识别系统,120种犬类精准检测+可视化界面全流程指南

本文介绍了一个基于YOLOv8的120种犬类目标检测与可视化系统毕业设计项目。该项目使用Stanford Dogs数据集,将图像分类任务转化为目标检测任务。主要内容包括:数据预处理(XML标注转换为YOLO格式)、YOLOv8模型训练与测试(包含训练脚本编写和推理实现),以及基于Tkinter的图形界面开发。该项目技术链条完整,涵盖检测、分割等多任务支持,适合作为计算机视觉方向的毕业设计选题,兼具技术深度和展示效果。

LXY_LOVE36的博客 96

工作积累之Iterator模式理解

GOF给出的定义为:提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。从定义可见,迭代器模式是为容器而生。再看STL:其中的容器提供迭代器,算法使用迭代器。模式UML图: 对容器对象的各个元素的访问必然涉及到遍历算法,如果单单是为了不暴露该对象的内部细节,可以在容器对象中实现遍历算法,提供遍历自身的接口,但是为什么不这么做呢? 在

startwithdp的专栏 553

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

设计模式总纲:23种设计模式介绍

设计模式是在软件开发中,经过多年的实践和总结出来的一种解决特定问题的经验性方法。它是一种可重用的解决方案,可以帮助开发人员避免在设计软件时遇到的常见问题,提高软件的质量和可维护性。

qq_36756227的博客 477

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java设计模式综述

Java设计模式总述 [持续更新...]一、设计模式六大原则1、单一职责原则2、开放封闭原则3、里氏替换原则4、依赖倒置原则5、迪米特原则6、接口隔离原则总结二、设计模式分类1、创建型设计模式单例模式:工厂方法模式:抽象工厂模式:建造者模式:原型模式:2、结构型设计模式适配器模式:装饰者模式:代理模式:外观模式:桥接模式:组合模式:享元模式:3、行为型设计模式策略模式:模板方法模式:观察者模式:迭代器模式:责任链模式:命令模式:备忘录模式:状态模式:访问者模式:中介者模式:解释器模式: 一、设计模式六大原则

红日 910

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

OOAD&UML note

day01: 面向对象     通过封装、继承、多态,把程序的耦合度降低,使程序灵活、容易修改、容易复用。     面向对象=对象 + 类 + 消息 + 继承 + 多态     面向对象方法是一种把面向对象的思想运用于软件开发过程,指导开发活动的系统方法,包括分析、设计和实现等活动     软件开发组越大,组中每个成员的生产率就越低                     --

hi_23 719

《设计模式学习》笔记一

《设计模式学习》笔记 什么是设计模式? “每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动”。 ——Christopher Alexander3 GOF设计模式 著作:《设计模式:可复用面向对象软件的基础》,书中介绍了23种经典...

sunshine_505的博客 245

设计模式:分类及设计原则简介

设计模式,设计模式分类及面向对象的设计原则简介

maojian_ohhey的博客 362

设计模式

1:GoF设计模式的分类 2:设计原则 1、单一职责原则 2、开闭原则(Open Close Principle) 3、里氏代换原则(Liskov Substitution Principle) 4、依赖倒转原则(Dependence Inversion Principle) 5、接口隔离原则(Interface Segregation Principle) 6、合成复用原则(Composite Reuse Principle) 7、迪米特法则(最少知道原则)(Demeter Principle) 3:创建

leiyanguo1112的博客 96

GoF设计模式

设计模式 6大设计原则 设计原则 英文全称 简称 特点 单一职责原则 Single Responsibility Principle SRP 里氏替换原则 Liskov Substitution Principle LSP 依赖倒置原则 Dependence Inversion Principle DIP 接口隔离原则 Interface Segregation Principle 迪米特法则 Law of Demeter LoD 开闭原则 Open Clos

liubo0525 1518

浅谈GOF设计模式之7大原则(二)

浅谈GOF设计模式之7大原则7大原则1.开闭(开放-封闭)原则2.单一职责原则3.依赖倒转原则(策略模式)4.迪米特法则(最小知识原则):低耦合 高内聚5.里氏替换原则:集成与派生的规则6.接口隔离原则7.组合/聚合复用原则(松耦合)其他术语合成/聚合复用继承复用耦合:模块之间的联系 |内聚:模块内部各个属性和行为彼此结合的程度 |通过模块间使用接口变量的形式,即动态方法调度实现 java程序模块间的低耦合,模块内部的高内聚 7大原则 1.开闭(开放-封闭)原则 一个软件实体 如 类 模块 函数 等

jdycsdn的博客 418

设计模式C++

一、“组件协作”模式:框架与应用程序的划分 “组件协作”模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常用的模式。 典型模式 • Template Method • Observer / Event • Strategy 1、Template methon 模式定义: 定义一个操作中的算法的骨架 (稳定),而将一些步骤延迟(变化)到子类中。 Template Method使得子类可以不改变(复用)一个算法的结构即可重定义(override 重写)该算法的某些特定步骤。

Jan___的博客 338

面向对象设计原则和GOF23种设计模式

本文一起看下面向对象的设计原则和GOF 23 种常用的设计模式。

wang0907的博客 362

什么是设计模式

Christopher Alexander说过:“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动”。 1995 年,GoF(Gang of Four,四人组/四人帮)合作出版了《设计模式:可复用面向对象软件的基础》一书,共收录了 23 种设计模式,从此树立了软件设计模式领域的里程碑,人称「GoF设计模式」。 设计模式...

二八法则的局外人 198

java设计模式学习------转

Java设计模式学习记录-GoF设计模式概述 前言 最近要开始学习设计模式了,以前是偶尔会看看设计模式的书或是在网上翻到了某种设计模式,就顺便看看,也没有仔细的学习过。前段时间看完了JVM的知识,然后就想着JVM那么费劲的东西都看完了,说明自己学习耐力还是有的,所以就打算仔细的研究研究设计模式,然后也将设计模式的学习过程记录下来。 GoF的设计模式 Gang of Four,...

weixin_30394333的博客 72
上一篇: GoF之开-闭原则
下一篇: GoF之依赖倒转原则
mayfla
博客等级 码龄14年 312粉丝 191原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值