设计模式:单一职责原则

Transformer是什么?看完这篇你就醍醐灌顶 前言 由谷歌团队提出的预训练语言模型BERT近年来正在各大自然语言处理任务中屠榜(话说学者们也挺有意思的,模型名都强行凑个芝麻街的人物名,哈哈哈)。 BERT算法的最重要的部分便是Transformer的概念,它本质上是Transformer的编码器部分。 而Transformer是什么呢?transformer是永远的神,自从transformer使用了抛弃rnncnn的纯attention机制之后,各种基于transformer结构的预训练模型都如雨后春笋般雄起,而transformer中最重要就是使用 阅读详情

设计模式:单一职责原则

中文名:单一职责原则
英文名:Single Responsibility Principle (SRP)
含义:对于一个类,应该仅有一个引起它变化的原因。通俗讲:如果有两个完全不一样的功能,就不应该把他们放在一个类中,一个类应该是一组相关性很高的函数,数据的封装。

示例:

package com.csdnnew.csdnlogin;

import com.csdnnew.csdnnew.MainActivity;
import com.csdnnew.csdnnew.R;
import cn.bmob.v3.Bmob;
import cn.bmob.v3.BmobUser;
import cn.bmob.v3.listener.SaveListener;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;


public class LoginActivity extends Activity implements OnClickListener{
	
	private Button buttonLogin;
	private Button buttonRegister;
	private EditText textUserName;
	private EditText textPassword;
	

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.login);
        
        buttonLogin = (Button)findViewById(R.id.bnLogin);
        buttonRegister = (Button)findViewById(R.id.bnRegister);
        buttonLogin.setOnClickListener(this);
        buttonRegister.setOnClickListener(this);
        
        textUserName = (EditText) findViewById(R.id.userNameText);
        textPassword = (EditText) findViewById(R.id.passwdText);
    }
    
    
	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.bnLogin:
			final BmobUser user=new BmobUser();
			String userName=textUserName.getText().toString();
	        String password=textPassword.getText().toString();
			//与数据库中的信息进行比对,成功返回成功,失败返回失败的信息
	        user.setUsername(userName);
	        user.setPassword(password);
	        /*
	         *用户登录
	         */
	        user.login(LoginActivity.this,new SaveListener() {
	            @Override
	            public void onSuccess() {
	                    Toast.makeText(LoginActivity.this,"登录成功",Toast.LENGTH_SHORT).show();
	                    Intent intent = new Intent();
	        			intent.setClass(LoginActivity.this, MainActivity.class);
	        			startActivity(intent);
	            }
	 
	            @Override
	            public void onFailure(int i, String s) {
	                Toast.makeText(LoginActivity.this,"登录失败",Toast.LENGTH_SHORT).show();
	            }
	        });
			break;
		case R.id.bnRegister:
			showRegist();
			break;

		default:
			break;
		}
	}
	
	private void showRegist() {
        //用户注册的方法
        String userName=textUserName.getText().toString();
        String password=textPassword.getText().toString();
        
       
        final BmobUser user=new BmobUser();
        user.setUsername(userName); 
        user.setPassword(password);
        /*
         *用户注册的提交
         */
        user.signUp(LoginActivity.this,new SaveListener() {
            @Override
            public void onSuccess() {
                Toast.makeText(LoginActivity.this,"注册成功",Toast.LENGTH_SHORT).show();
            }
 
            @Override
            public void onFailure(int i, String s) {
                Toast.makeText(LoginActivity.this,"注册失败"+s,Toast.LENGTH_SHORT).show();
            }
        });
    }
}

上面是刚开始写的一个android的登陆注册的activity   在这个类中,既实现了登陆方法,也实现了注册方法。在后期的开发中,我们需要添加不同的注册方式,需要添加手机短信验证或者短信验证,而且对于登陆也要支持第三方的登录,如此一来再去改动原来的登录,注册方法尤其困难,稍不注意就会出错,逻辑上也比较复杂。Activity也越来越臃肿。此时,我们应该使用单一职责原则来重构代码:

把activity ,注册 ,登录进行分离,注册和登录单独定义一个类,这样注册类就实现注册方法,登录类只实现登录的功能。

UML类图:



注意:

在使用时我们要注意职责的扩散,比如我们的登录类在登录操作前要进行用户密码长度的检测,对于密码检测这个功能我们是否要定义一个新的类来实现它呢?
这时就要结合具体的情况了。不过我们有这样一个原则:只有逻辑足够简单,才可以在代码级别上违背单一职责原则,只有类中的方法足够少,才可以在方法级别上违反单一职责原则。




YOLO系列算法改进 | C3k2改进篇 | 融合DFRL双融合注意力接收层 | 轻量化与全局感受野双突破,适应高分辨率航拍与密集小目标检测场景 | CVPR 2026 YOLO系列算法改进 | C3k2改进篇 | 融合DFRL双融合注意力接收层 | 轻量化与全局感受野双突破,适应高分辨率航拍与密集小目标检测场景 | CVPR 2026 (以YOLO26最新目标检测模型为基础,利用C3k2_DFRL创新模块进行改进) 阅读详情

相关推荐

PLC1200使用CB1241RS485通讯模块做从站进行Modbus Rtu通信

添加新设备(PLC)->设备和网络管理->点击PLC->看到硬件目录选择通信板->点到点->CB1241(RS485)->看到6ES7241-1CH30-1XB0选择添加,如图。指向Modbus保持寄存器数据块的指针 我这里指向了自定义的DB块数据中一个INT数组。在通信->通信处理模块->MODBUS(选择不带RTU的通信指令块)注意:接线时,TRA接485调试模块的B- TRB接调试模块的A+组态后的硬件标识符 270 对应自己组态后自动生成的。1:事务完成,且无任何错误。波特率对应自己使用的。

swmyaopeng的博客 2万+

【Python】新手入门学习:详细介绍单一职责原则(SRP)及其作用、代码示例

通俗易懂地说,一个类应该只有一个职责,当需求变化时,这个变化应该只影响一个类,而不是多个类。每个类都专注于自己的单一职责:订单类关注订单信息,订单处理类关注订单处理逻辑,支付服务类关注支付逻辑,而订单服务类则协调整个流程。通过遵循单一职责原则,我们可以提高代码的可读性、可维护性和可重用性,降低类之间的耦合度,使系统更加灵活和可扩展。遵循单一职责原则的类更容易实现OCP,因为每个类职责单一,更容易进行扩展和修改。在这个示例中,我们将展示一个订单处理和支付流程的简单实现,其中每个类都专注于自己的单一职责。

Oona_01的博客 426

从零开始:用Kimi API和LangChain打造智能写作助手

本文详细介绍了如何从零开始,利用Kimi API提供的强大AI大模型能力,结合LangChain框架构建一个智能写作助手。通过实战演示了环境搭建、核心写作链构建、以及引入检索增强生成和智能体等进阶功能,旨在解决长文档创作、事实准确性等痛点,打造一个能理解意图、调用工具并保持记忆的智能创作伙伴。

weixin_29294395的博客 138

【Python设计模式02】设计原则

每个类应该只有一个引起变化的原因。这意味着,一个类应该仅有一个明确的职责。当职责过多时,类的修改可能会影响到多个方面,导致代码难以维护和扩展。单一职责原则是面向对象编程中的重要原则之一,强调每个类应该只有一个引起变化的原因。通过遵循单一职责原则,可以提高代码的可维护性、可读性和复用性,降低代码的耦合度。合理应用单一职责原则,可以显著提升代码质量和设计水平。紧耦合和松耦合是软件设计中的重要概念。紧耦合导致高依赖性、低可维护性和低复用性,而松耦合通过减少类之间的依赖,提高系统的可维护性和可扩展性。

weixin_55252589的博客 1797

英伟达 Jetson AGX Thor 官方入门教程(一)系统U盘安装

NVIDIA Jetson AGX Thor开发套件快速安装指南 本指南详细介绍了NVIDIA Jetson AGX Thor开发套件的安装流程。该套件搭载T5000 SoM,为物理AI和机器人应用提供强大支持。安装过程采用全新的JetPack 7.0方案,通过USB闪存盘即可完成BSP(Jetson Linux)安装,无需依赖Ubuntu主机。指南包含硬件开箱说明、两种配置模式(带显示器/无显示器)、详细的ISO镜像下载和USB制作步骤(推荐使用Balena Etcher工具),以及首次启动后的初始设置流

机器人控制与仿真应用 2867

使用Python爬虫获取Facebook帖子和评论数据

Web爬虫是用于自动抓取网页数据的程序。它通过发送HTTP请求,获取网页的HTML源代码,再对源代码进行解析,提取所需的内容。爬虫常用于数据收集、信息提取、数据分析等应用。

2201_76125261的博客 1998

Python面向对象编程 - 单一职责原则(SRP)

在Python中可以通过模块(文件)来进一步组织单一职责的类,如将数据库操作类放在。通俗理解:一个类/模块/函数应该只负责一项具体职责。一个类应该只有一个引起它变化的原因。

Aerkui的博客 689

00 — Intel xe SVM 内核实现精读系列专栏导读

本文系统介绍了Intel Xe GPU的共享虚拟内存(SVM)实现机制。第一部分通过概念地图阐述SVM的六个核心概念及其关系;第二部分通过三个测试用例解析SVM关键功能:fault生命周期验证、madvise与VRAM迁移、跨GPU一致性;第三部分深入内核实现,包括初始化/销毁流程、Page Fault处理、MMU Notifier失效路径、异步垃圾回收、VRAM迁移机制、madvise实现原理,以及与ROCm SVM的对比。文章建议按功能模块顺序学习,从基本概念到测试用例,再深入内核实现细节,最后对比不同

图形/计算GPU的驱动与虚拟化技术分享园地 1664

Python:单一职责原则(SRP)

它并不限制一个类做多少事,而是强调“一个类的所有行为必须属于同一种变化来源”。例如一个视图类同时处理:数据校验、ORM 查询、业务逻辑、异常处理、序列化、日志、通知推送。如果一个类承担了多种不同类型的职责,那么任何一种职责发生变化时,都可能迫使类被修改,最终导致代码变得脆弱、庞大、难以维护。当 utils.py 中含有几十种不相关的方法时,它本质上已经不是“一个职责”,而是“多个变化来源的集合”。例如,当日志、业务逻辑、数据存储、验证规则混在一个类里时,其中任何一个需求变更都会让整个类被修改。

qq_41176800的博客 900

WordPress插件depicter存在SQL注入漏洞(CVE-2025-2011)

Depicter 是一款功能强大的 WordPress 幻灯片插件,允许用户通过直观的拖放编辑器轻松创建响应式滑块、轮播和动态内容展示。该插件提供丰富的模板库、动画效果和图层控制,支持多媒体内容嵌入(如图片、视频、HTML),并优化了移动端显示和SEO性能。其无代码操作界面适合非技术用户,同时提供高级自定义选项,适用于产品展示、营销推广和视觉叙事等多种场景,是提升网站视觉吸引力的高效工具。

m0_50125527的博客 550

2023.03.27更新大麦网PC端抢购软件和使用教程

近期发现大麦网页端抢购页面悄然发生变化,之前可以在页面选择票价、档次,并且点击按钮进行购票,现在不行了,新的页面如下图所示。已经安全没有了点击按钮,因此,但是并不代表不能像以前之前那样。

猫敷雪 1万+

【Python】新手入门学习:详细介绍单一职责原则(SRP)及其作用、代码示例(1周前)

这样,当需要添加新的支付方式时,我们只需要实现新的支付类,并将其注册到系统中,而无需修改现有的业务逻辑代码。DIP原则鼓励我们在编写代码时,将抽象层与具体实现层进行分离,通过接口或抽象类来定义抽象层,而将具体的实现细节放在具体实现层中。通过定义清晰的抽象层和具体实现层,我们可以降低模块之间的耦合度,提高代码的可复用性和可测试性。这样,当具体实现发生变化时,我们只需要修改具体实现层,而无需修改高层模块,从而降低了代码的维护成本。高层模块依赖于抽象:在高层模块中,只引用抽象层,而不直接引用具体实现类。

Oona_01的博客 158

一文吃透 SAP HANA Service Broker:原理、架构与落地实践

摘要:SAP HANA Service Broker 作为云原生开发的关键组件,通过标准化流程管理 HDI 容器与服务实例的生命周期,实现数据库资源的自动化配置与安全隔离。它采用服务目录、服务计划和绑定机制,将连接凭据注入应用环境变量,避免硬编码风险。在实际应用中,需根据模块生命周期决定共享或隔离容器,并通过跨容器访问模式实现安全数据共享。典型案例展示了电商平台的多模块协同与SaaS租户隔离场景,验证了其在提升运维效率与安全合规方面的价值。最佳实践强调以生命周期划边界、最小权限原则和HTTPS安全传输,为企

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 225

设计模式:单一职责原则(Single Responsibility Principle,SRP)介绍

单一职责原则(Single Responsibility Principle,SRP)是面向对象设计原则之一,它强调一个类应该只有一个引起变化的原因。一个类如果承担了多个职责,就容易导致功能之间的耦合,当一个功能需要修改时,可能会影响到其他功能。而遵循单一职责原则,可以降低类之间的耦合性,使得代码更加灵活和易于维护。当系统需要新增或修改功能时,可以更容易地重用已有的类,而不需要对现有的类进行大量修改。这样,每个类都只需关注自己的单一职责,使得类更加内聚,代码更加清晰。

captain 297

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Camera2Demo

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

设计模式笔记:单一职责原则(SRP, Single Responsibility Principle)

1. 单一职责原则核心思想   一个类应该有且只有一个变化的原因。 2. 为什么引入单一职责原则   单一职责原则将不同的职责分离到单独的类,每一个职责都是一个变化的中心。   在SRP中,把职责定义为变化的原因。   当需求变化时,将通过更改职责相关的类来体现。如果一个类拥有多于一个的职责,则多个职责耦合在一起,会有多于一个原因来导致这个类发生变化。一个职责的变化可能会影响到其他的职责...

weixin_33947521的博客 92

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Java设计模式--单一职责原则(Single responsibility principle,缩写为:SRP)

Java设计模式–单一职责原则 说明:一个类或者一个模块主负责完成一个职责(A class or module should have a single responsibility)。通俗的说就是一个模块,类,方法不要承担过多的任务 原则上来说,我们设计一个类的时候不应该设计成大而全的类,要设计粒度小,功能单一的类,如果一个类两个或者两个以上的不相干的功能,那我们就说它违背了单一职责原则,应该将它拆分成多个功能单一,粒度更细的类。 实际开发软件的过程中,不必严格遵守原则,可以设计一个粗 粒度的类,随着业务

weixin_44808225的博客 371

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

设计模式原则之:单一职责原则SRP

在面向对象的软件设计中,只有尽量降低各个模块之间的耦合度,才能提高代码的复用率,系统的可维护性、可扩展性才能提高。面向对象的软件设计中,有23种经典的设计模式,是一套前人代码设计经验的总结,如果把设计模式比作武功招式,那么设计原则就好比是内功心法。常用的设计原则有七个,本文将具体介绍单一职责原则。单一职责原则:专注降低类的复杂度,实现类要职责单一;开放关闭原则:所有面向对象原则的核心,设计要对扩展开发,对修改关闭;里式替换原则:实现开放关闭原则的重要方式之一,设计不要破坏继承关系;

初念初恋的博客 776

设计模式六大原则(1):单一职责原则SRP(Single Responsibility Principle)

文章转载于:http://blog.youkuaiyun.com/zhengzhb/article/details/7278174 定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。 解决方案:遵循单一职责原则。分别建

holon23的专栏 874

【设计模式】设计原则:SRP 单一职责原则

单一职责(Simple Responsibility Pinciple,SRP)是指不要存在多于一个导致类变更的原因。 假设我们有一个 Class 负责两个职责,一旦发生需求变更,修改其中一个职责的逻辑代码,有可能会导致另一个职责的功能发生故障。这样一来,这个 Class 存在两个导 致类变更的原因。 如何解决这个问题呢?我们就要给两个职责分别用两个 Class 来实现,进行解耦。后期需求变更维护互不影响。这样的设计,可以降低类的复杂度,提高类的可读性 , 提高系统的可维护性 , 降低变更引起的风险 。 总

A minor 396

设计模式:单一职责原则(SRP)

单一职责原则(SRP)

永立的专栏 581

设计模式原则篇:(1)单一职责原则--Single Responsibility Principle

上篇文章提及到设计模式中应遵循的设计原则,并且列出了设计模式中应当遵循的六大原则。        次篇文章主要讨论单一职责原则。              单一职责原则(SRP):                          不要存在多于一个导致类变更的原因。简单的讲,就是一个类或接口只负责一个"职责"。               如果一个类有一个以上的职责,这些职责就耦合在一起了

LCore的专栏 1925

设计模式: 单一职责原则(SRP)- 让代码更易维护与测试

设计模式: 单一职责原则(SRP)- 让代码更易维护与测试

weixin_46619605的博客 1239

Java设计模式:单一职责原则(SRP)通俗易懂实战解析

System.out.println("【学生信息】姓名:" + student.getName() + " 年龄:" + student.getAge());System.out.println("学生姓名:" + name + ",年龄:" + age);System.out.println("执行文件保存,写入内容:" + content);System.out.println("文件保存成功:" + data);// 违反SRP:同时承载【属性存储、信息打印、数据校验、文件保存】4个职责。

2301_81943359的博客 203

设计模式六大原则(一):单一职责原则(Single Responsibility Principle)

单一职责(SRP)定义: 不要存在多于一个导致类变更的原因,通俗的说,即一个类只负责一项职责。 问题由来: 类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。 解决方案: 遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改...

weixin_30346033的博客 92

小话设计模式原则之:单一职责原则SRP(转)

前言:上篇小话设计模式原则之:依赖倒置原则DIP简单介绍了下依赖倒置的由来以及使用,这篇继续来看看设计模式另一个重要的原则:单一职责原则。 软件设计原则系列文章索引 小话设计模式原则之:依赖倒置原则DIP 小话设计模式原则之:单一职责原则SRP 小话设计模式原则之:接口隔离原则ISP 小话设计模式原则之:开闭原则OCP 小话设计模式原则之:里氏替换原则LSP 一、原理介绍 ...

weixin_30781631的博客 79

C#软件设计——小话设计模式原则之:单一职责原则SRP

前言:上篇C#软件设计——小话设计模式原则之:依赖倒置原则DIP简单介绍了下依赖倒置的由来以及使用,中间插了两篇WebApi的文章,这篇还是回归正题,继续来写写设计模式另一个重要的原则:单一职责原则。 软件设计原则系列文章索引 C#软件设计——小话设计模式原则之:依赖倒置原则DIP C#软件设计——小话设计模式原则之:单一职责原则SRP C#软件设计——小话设计模式原则之:接口隔离原则...

weixin_34132768的博客 185
上一篇: OpenGL的安装与配置
下一篇: 设计模式:接口隔离原则
cassiePython
博客等级 码龄12年 303粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值