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() + "统计数据");
    } 
}

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

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

优点

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

难点

  • 在于怎么合理划分职责

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

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

Labview实现服务器(server)与多客户端(clients)通信 服务器可以接收多个客户端发送的消息,并显示消息来源。 服务器可以发送消息到指定客户端 客户端可以自动连接服务器,断连后重连 客户端可以发送消息到服务器,可接收服务器消息 类似框架可以用做中央服务器及客户端项目 阅读详情

相关推荐

八戒留档之宝塔部署edusoho

1.安装好基础的服务 2.上传你下载的代码到www/wwwroot文件3、配置网站 4.编辑创建的网站修改nginx文件 NGINX配置如下 server { listen 80; server_name 你的域名; root /www/wwwroot/项目文件名称/web/; location / { try_files $uri /app_dev.php$is_args$args; } ...

wolf23151269的博客 2541

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

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

weixin_37799575的博客 528

视频生成工具本地部署完全指南:Seedance能装吗?有哪些开源替代?

本文系统介绍了视频生成模型的本地部署方案,分为三个部分:1)Seedance 2.0的混合部署模式,其开源组件可本地集成但核心功能需调用API;2)完全开源替代方案对比,包括LTX-2、Wan 2.1等模型的硬件需求与特点;3)详细部署指南,以ComfyUI+Wan 2.1为例,涵盖软件准备、模型整合、参数调优等步骤,并提供了显存优化和多GPU配置技巧。文章为需要离线视频生成能力的用户提供了完整技术路径。

小明的博客 1万+

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

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

m0_62946761的博客 7245

别再只用GPS了!用Android手机传感器实现室内步行轨迹记录(避坑指南)

本文详细介绍了如何利用Android手机传感器(如加速度计、陀螺仪和磁力计)实现室内步行轨迹记录,克服GPS在室内的局限性。通过传感器数据采集、步态检测、航向估计和轨迹绘制等步骤,结合避坑指南和优化技巧,帮助开发者高效构建室内定位应用。

weixin_26821003的博客 274

YOLO详解

本文参考知乎 https://zhuanlan.zhihu.com/p/25236464 1. YOLO的创新点 YOLO将物体检测作为回归问题求解。基于一个单独的end-to-end网络,完成从原始图像的输入到物体位置和类别的输出。 从网络设计上,YOLO与two steps的目标检测方法如RCNN、Fast RCNN和Faster RCNN的区别如下: YOLO训练和检测均是在一个单独网...

UnknownPlayer的博客 9952

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

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

林知屿的博客 1773

gd32 spi 发送&中断接收例程

【代码】gd32 spi 发送&中断接收例程。

weixin_43026921的博客 1653

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

Java面向对象的设计原则

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

2024年淘宝平板电脑销售数据分析

本项目的目标是从淘宝电商平台上自动化爬取商品信息,并通过数据分析帮助了解价格、销量等相关指标,为商业决策提供支持。使用Selenium实现数据爬取,结合Python的数据处理与可视化工具,进一步分析和展示结果。

2301_76728517的博客 1474

Vlan的封装模式和端口讲解(Access、Trunk、Hypbrid端口)

Vlan(Virtual Local Area Network)虚拟局域网,将一个物理的LAN在逻辑上划分为多个广播域,在交换机上实现广播域隔离(增强局域网的安全性、限制广播风暴、简化网络管理)Vlan通过将二层数据帧打上Vlan标签(打上Vlan标签也就是封装Vlan),正常情况下,不同Vlan Tag的数据包是无法二层直接互访的,以此来实现广播域的隔离可以理解为一个Vlan对应一个广播域,同一Vlan内的主机可以二层直接通信,不同Vlan间的主机无法二层直接通信。

m0_49864110的博客 5643

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

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

MaoLin Tian's Blog 1003

基于知识图谱的时空事件关联推理能力培养

随着信息技术的飞速发展,大量的时空事件数据被产生和收集,如交通流量数据、气象观测数据、社交媒体上的地理定位信息等。这些数据蕴含着丰富的知识和规律,但要从中提取有价值的信息并非易事。基于知识图谱的时空事件关联推理旨在通过构建知识图谱,将时空事件数据进行整合和关联,从而实现对事件之间潜在关系的挖掘和推理。本文的目的是系统地介绍基于知识图谱的时空事件关联推理能力的培养方法,包括核心概念、算法原理、数学模型、实际应用等方面。

操作系统内核探秘的博客 750

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

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

Horace's Blog 545

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

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

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

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

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

胖子胖子大胖子的博客 1193

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

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

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【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、付费专栏及课程。

余额充值