Java设计原则 - 单一职责原则

java设计模式1,单一职责原则 单一职责原则就是指一个类或者模块应该有且只有一个改变的原因。 阅读详情

这里想吐槽一下,可能由于最近优快云升级,导致我辛辛苦苦写了两天的记录丢失了(退出前确定按了保存的),真是够了!!!现在权当再复习一遍!

好了,废话不多说,开始整理Java设计原则!

六大设计原则

定义

应该有且仅有一个原因引起类的变更。通俗的说,即一个类只负责一项职责。

虽然很容易理解,不就是一个类只负责一项职责吗,但是却很难做到,因为很难划分职责。

我们来一个场景说明一下单一职责原则的好处。

场景

现需求设计一个工程师类,要求工程师类具有在电脑上编写代码的能力

public class Engineer {
    public void code(Computer computer) {
        System.out.println("工程师正使用" + computer.getName() + "敲代码");
    }
}

后来增加一个需求,要求工程师类还有测试手机软件的能力

public class Engineer {
    public void code(Computer computer) {
        System.out.println("工程师正使用" + computer.getName() + "敲代码");
    }
    public void test(Phone phone) {
        System.out.println("工程师在" + phone.getName() + "上测试软件");
    }
}

再后来又增加一个需求,要求工程师类还有统计报表的能力

public class Engineer {
    public void code(Computer computer) {
        System.out.println("工程师正使用" + computer.getName() + "敲代码");
    }
    public void test(Phone phone) {
        System.out.println("工程师在" + phone.getName() + "上测试软件");
    }
    public void statistics(ReportForm reportForm) {
        System.out.println("工程师在" + reportForm.getName() + "统计数据");
    } 
}

再再后来,又增加需求 ……

我们来分析一下有什么不妥?!虽然前期工程师类增加功能看似很简单,但是功能越多,意味着依赖的模块也就越多。当其中某一模块出现问题,整个类也会随之异常。这就是有多个原因导致类变更的情况。

怎么解决?好办,划分职责:

public class CodeEngineer {
    public void code(Computer computer) {
        System.out.println("工程师正使用" + computer.getName() + "敲代码");
    }
}
public class TestEngineer {
    public void test(Phone phone) {
        System.out.println("工程师在" + phone.getName() + "上测试软件");
    }
}
public class StatisticsEngineer {
    public void statistics(ReportForm reportForm) {
        System.out.println("工程师在" + reportForm.getName() + "统计数据");
    } 
}

这样划分之后,每个工程师类都只依赖一个模块,其中一个模块出现问题,也只是一个工程类出现问题,其他两个工程类不受之影响。

可能上面的例子比较简单,不足体现出单一职责原则的好处。但实际上,由于一个类功能越多,就越多客户类去使用这个功能强大的类(因为啥都能干呀),一旦这个功能强大的类出现异常,可能就得修改这么多个客户类,导致 “牵一发而动全身” 。而且由于类功能强大,依赖的模块越多,也就越容易出问题。

优点

  • 可以降低类的复杂度,一个类只负责一项职责,其逻辑肯定要比负责多项职责简单的多;
  • 提高类的可读性,提高系统的可维护性;
  • 变更引起的风险降低,变更是必然的,如果单一职责原则遵守的好,当修改一个功能时,可以显著降低对其他功能的影响。

难点

  • 在于怎么合理划分职责

划分粒度太大,达不到单一职责效果;划分粒度太细,会导致类膨胀,也会产生没必要的花销。

至于怎么划分职责,还得靠自己的开发经验,年轻人,慢慢积累吧,路还远着呢!!

威纶通触摸屏与S7-1200以太网通信的具体方法和步骤(非常详细) 阅读详情

相关推荐

Python+QMT量化交易实战:从零搭建你的第一个极速策略(附完整代码)

本文提供了一份详细的Python+QMT量化交易实战指南,手把手教你从零搭建一个可回测、可实盘的极速策略。内容涵盖环境配置、QMT核心机制解析、双均线策略的完整代码实现、回测优化方法以及实盘部署要点,帮助量化交易新手快速入门并掌握核心开发流程。

b9c0d的博客 1013

java设计模式六大原则之【单一职责】

参考引用单一职责原则是说一个类应该只有一个改变的原因。也就是说应该只有一个职责。如果一个类有一个以上的职责,这些职责就耦合在了一起,那么这个类就很容易出现问题,这会导致脆弱的设计。比如修改一个职责可能会影响另一个职责的正常使用。所以我们需要开发符合单一职责原则的类,使其功能单一,易于维护和扩展。简单通俗的来说:一个类只负责一项职责。

weixin_37799575的博客 528

BSD盲区检测系统性能要求及试验方法

盲区监测系统BSD通过安装在车辆后方的两颗毫米波雷达实时监测驾驶员视野盲区,当发现视野盲区内出现其它道路使用者时,通过左右后视镜上的警示灯向驾驶员发出报警。

未知艺术家的博客 2359

Java设计模式七大原则-单一职责原则

讲解java设计模式遵循的七大原则之一的单一职责原则

m0_62946761的博客 7245

华为2288H V5服务器断电后‘趴窝’?别慌,手把手教你用SmartKit+BMC修复工具搞定

本文详细介绍了华为2288H V5服务器在断电后无法启动的修复方法,通过SmartKit和BMC修复工具进行故障诊断与修复。文章提供了从工具获取、安装到具体修复流程的完整指南,帮助运维人员快速恢复服务器运行,并给出了后续加固与预防措施,确保服务器稳定运行。

weixin_30575517的博客 297

从波形图到参数调优:一次无感BLDC电机启动失败的深度解析

本文深入解析无感BLDC电机启动失败案例,通过波形分析揭示参数不匹配和IPM保护机制触发等关键问题。详细探讨了过零点检测、PWM周期设置及强拖参数调优的底层逻辑,并分享IPM模块保护机制与实战调优技巧,最终实现99.98%的启动成功率。

weixin_29182481的博客 820

java设计模式(2)---六大原则

单一职责原则:一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。单一职责原则告诉我们:一个类不能太“累”!在软件系统中,一个类承担的职责越多,它被复用的可能性就越小,而且一个类承担的职责过多,就相当于将这些职责耦合在一起,当其中一个职责变化时,可能会影响其他职责的运作,因此要将这些职责进行分离,将不同的职责封装在不同的类中,即将不同的变化原因封装在不同的类中,如果多个职责总是同时发生改变则可将它们封装在同一类中。

林知屿的博客 1773

从零搭建A股量化交易系统:开源框架选型与实战部署指南

本文详细介绍了从零搭建A股量化交易系统的完整流程,重点分析了开源框架VNPY和QMT的选型与实战部署。内容涵盖系统架构设计、策略开发、性能优化及实盘过渡方案,为开发者提供了一套完整的A股实盘量化交易解决方案,助力高效构建稳定可靠的量化交易系统。

sugar的博客 1271

Java设计原则之单一职责原则、开闭原则、里氏代换原则

Java面向对象的设计原则

人生处处是围城,一切都是最好的安排! 1480

8.时间序列预测

目标:使用历史数据预测未来的销售额。通过以上步骤,可以在Excel中有效进行预测分析,帮助做出更准确的决策通过考虑不同时期数据的影响,可以显著提高预测的准确性。结合多种方法和模型,可以灵活应对复杂的市场环境和变化。

学习,输出==》再学习再输出 891

使用 MATLAB/Simulink 构建一个多时间尺度下的微电网经济运行优化策略模型

本文介绍了基于Simulink的多能互补微电网系统建模方法,重点关注多时间尺度下的经济运行优化策略。内容包括:系统背景与目标、微电网结构设计(光伏、风电、储能、柴油发电机等模块)、多时间尺度能量管理架构(日前优化、日内滚动优化、实时控制)的实现步骤,以及仿真运行与结果分析。教程详细说明了如何在Simulink中调用优化算法,设置仿真参数,并提供了进阶研究方向和资源推荐。该模型为研究微电网的经济运行和智能调度提供了完整的仿真平台解决方案。

amy_mhd的博客 171

【Java设计模式 经典设计原则】一 SOLID-SRP单一职责原则

单一职责原则是为了实现代码高内聚(功能相关高内聚)、低耦合(功能无关低耦合),提高代码的可复用性、可读性、可维护性。具体怎么拆分主观上依据对业务发展的认知和场景的分析持续重构,客观上依据几条可执行规则:代码的行数、属性、方法不要过多;类依赖与被依赖的程度较低;私有的通用方法不能过多;类要比较好命名,见名之意;类的属性操作比较均衡。虽然单一职责原则原则好,可不要单纯为了更单一去拆分,否则本来内聚的功能被拆分了后代码的可维护性就会变的很差。...............

MaoLin Tian's Blog 1003

独家改进|基于YOLO26的轻量级检测网络:参数量减半,精度不降反升

不要全层替换深度可分离卷积:P5深层对语义特征要求高,用标准卷积效果更好,只在P2、P3浅层用DWConv性价比最高注意力不是越多越好:每个阶段加一个就够,加在模块输出端,不要插在模块中间,否则部署容易出现算子不兼容问题轻量模型训练别贪快:初始学习率一定要调低,不然很容易前期震荡,后期收敛不上,精度卡在瓶颈小目标场景优先保留P2分支:如果对速度要求不是极致,保留P2检测头,小目标收益远大于速度损失。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 221

Java设计模式之设计原则-单一职责原则 (SRP)

????文章示例代码???? 附链 你也可以在这些平台阅读本文: 语雀 个人博客 定义 就一个类而言,有且仅有一个引起它变更的原因。 一个类/接口/方法只负责一项职责。 如何理解 假设有个 A 类负责职责1和职责2两个职责。 当需求发生变更时,比方说职责1相关的功能需要发生改变,那我们在修改 A 这个类的时候就有可能会导致原本运行正常的职责2发生故障。 也就是说对于这个 A 类来说,当职责1和职责2的...

Horace's Blog 545

Camera2Demo

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

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Java面向对象设计原则4——单一职责原则

在我们学习面向对象编程的时候,总会出现一些问题,好比以前刚刚写好的代码,上线测试可以、正常运行,突然有一天说要加一个功能,改完之后,发现以前正常运行的功能不能用了,类似这样的问题有好多好多,为了避免类似的事件发生,程序员一定要根据这些原则去开发程序。 我们一个一个来学习,今天来学习7大面向对象设计原则之一,单一职责原则。 单一职责原则: 单一职责原则(Single Responsibilit...

胖子胖子大胖子的博客 1193

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

JAVA 编程中的SOLID设计原则:SRP,单一职责原则 OCP,开闭原则 LSP,里氏替换原则 ISP,接口隔离原则 DIP,依赖倒置原则

SRP,单一职责原则 OCP,开闭原则 LSP,里氏替换原则 ISP,接口隔离原则 DIP,依赖倒置原则SRP,单一职责原则 OCP,开闭原则 LSP,里氏替换原则 ISP,接口隔离原则 DIP,依赖倒置原则SRP,单一职责原则 OCP,开闭原则 LSP,里氏替换原则 ISP,接口隔离原则 DIP,依赖倒置原则SRP,单一职责原则 OCP,开闭原则 LSP,里氏替换原则 ISP,接口隔离原则 DIP,依赖倒置原则SRP,单一职责原则 OCP,开闭原则 LSP,里氏替换原则 ISP,接口隔离原则 DIP,依赖

猫头虎技术团队:授渔优于赠鱼,兴趣引领智慧,探索之乐尤显珍贵。商务合作+:Libin9iOak ,万粉变现+:优快云WF,猫头虎承诺每年免费为100名C站创作者做账号流量诊断服务!全网搜:猫头虎技术团队,点击文章底部名片或直接私信我一切皆可谈,快找虎哥! 838

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【Java 设计模式】设计原则之单一职责原则

单一职责原则是由罗伯特·C·马丁(Robert C. Martin)提出的,它规定一个类应该只有一个引起变化的原因。换句话说,一个类应该只有一个职责。如果一个类负责太多的事情,那么一旦需求变化,可能需要修改该类的多个部分,增加了代码的复杂性,也增加了引入错误的风险。单一职责原则是面向对象设计中一个基本且重要的原则,它有助于创建清晰、可维护、可扩展的代码。通过确保每个类只有一个职责,我们可以降低代码的复杂性,提高代码的质量。

好久不见的流星 1846

Java 七大设计原则 - 单一职责原则

2. 司机开车 和 停车在一个方法里面、如果业务复杂、会导致业务变化出现bug概率变大。1. 一个类只负责一项《核心业务》 (降低类的复杂度、耦合性、逻辑更内聚)。3. 降低业务变化的影响范围、减少系统稳定性风险。对方法来说: 一个方法只负责一种精准业务的实现。对类来说: 一个类只负责一项职责、2. 提高类的可读性,可维护性。

380

JAVA设计原则:单一职责原则

单一职责原则 就一个类而言,应该仅有一个引起它变化的原因。例如一台山寨手机的功能:拍照、摄像、手机游戏、网络摄像头、GPS、炒股等等,虽然功能多,但是每一个功能都不强。 每一个职责都是一个变化的轴线,当需求变化时会反映为类的职责的变化。如果一个类承担的职责多于一个,那么引起它变化的原因就有多个。一个职责的变化甚至可能会削弱或者抑制类完成其他职责的能力,从而导致脆弱的设计。   一、单一职责原则示例...

Derrick 377

Java设计原则——单一职责原则

设计模式原则,其实就是程序员在编程时,应当遵守的原则,也是各种设计模式的基础(即:设计模式为什么这样设计的依据),有的教科书上写的是六大原则,但是后来又新加了一个合成复用原则。本篇博客主要记录。对类来说的,即一个类应该只负责一项职责。如类A负责两个不同职责:职责1,职责2。当职责1需求变更而改变A时,可能造成职责2执行错误,所以需要将类A的粒度分解为 A1,A2。用一个类来描述程序员编写代码这个场景。 2、示例2 在工作中发现,并不是所有的程序员都使用IDEA编写代码的,有的程序员喜欢用Eclipse,有的

怪咖@的博客 880

Java设计原则之单一职责原则

单一职责原则是指:一个类、接口、方法只具备一个职责。单一职责原则可以降低系统的复杂性,提高代码可读性、可维护性。 比如:在开发过程中,我们通过会涉及到用户信息接口的开发,一个User类可能包含的信息如下: public class UserInfo { private Long id; private String username; priv...

qq_36986015的博客 182

Java中七大设计原则之单一职责原则讲解

单一职责原则 单一设计原则讲解: 对类来说,即一个类应该只负责一项职责: 如A类负责两个不同职责: 职责1,职责2。当职责1需求 变更而改变A时,可能造成职责2执行错误,所以需要将类A的粒度分解为A1,A2。 单一职责原则注意事项和细节: 1. 降低类的复杂度,一个类只负责一项职责。 2. 提高类的可读性,可维护性。 3. 降低变更引起的风险。 4. 通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单,才可以在代码级别违反单一 职责原则: 只有类中方法数量足够少,可以在方法级别保持单一职责原则。 这里通

qq_49529322的博客 279

Java七大设计原则之单一职责原则

单一职责原则(Single Responsibility Principle),简称SRP。 定义:应该有且仅有一个原因引起类的变更。 个人理解为将项目需求分解到底,为每一个功能创建一个对应的实现类。 这个原则的意义个人理解为: 1.降低类的复杂性,让程序代码简单好懂 2.降低修改类的风险,让后期维护拓展代码时更加方便

u011400521的博客 305

java 设计原则(三) 单一职责原则

定义:不要存在多于一个导致类变更的原因 一个类/接口/方法只负责一项职责 优点:降低类的复杂度、提高类的可读性 提高系统的可维护性、降低变更引起的风险。 package singleresponsibility; public class Fruit { public void fruitcolor(String fruitName){ //增加如果是鸵鸟的话 就不会飞 ...

草帽boy的博客 295

Java中的七大设计原则

Java中的七大设计原则,也称为SOLID原则,是为了让程序(软件)具有更好的代码重用性,可读性,可扩展性,可靠性,使程序呈现高内聚,低耦合的特性。

微笑听雨 1万+

Java设计原则(三)单一职责原则

单一职责原则 定义 不要存在多于一个导致类变更的原因 一个类、接口、方法只负责一项职责 优点 降低类的复杂度 提高类的可读性 提高系统的可维护性 降低变更引起的风险

baidu_41934937的博客 144
上一篇: Android Retrofit源码解析
下一篇: Java设计原则 - 里氏替换原则
JohanMan
博客等级 码龄10年 72粉丝 131原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值