当前位置: 首页 > news >正文

小谈设计模式(4)—单一职责原则

小谈设计模式(4)—单一职责原则

  • 专栏介绍
    • 专栏地址
    • 专栏介绍
  • 单一职责原则
    • 核心思想
      • 职责的划分
      • 单一变化原则
      • 高内聚性
      • 低耦合性
      • 核心总结
    • 举例
      • 图书类(Book)
      • 用户类(User)
      • 图书管理类(Library)
      • 分析
    • 不遵守单一职责原则,可能引发的问题
      • 类的职责不清晰
      • 类的修改影响范围过大
      • 难以重用和扩展
    • Java代码实现
      • 程序分析
    • 总结

专栏介绍

专栏地址

link

专栏介绍

主要对目前市面上常见的23种设计模式进行逐一分析和总结,希望有兴趣的小伙伴们可以看一下,会持续更新的。希望各位可以监督我,我们一起学习进步,加油,各位。
在这里插入图片描述

单一职责原则

单一职责原则(Single Responsibility Principle,SRP)是设计模式中的一项原则,它指出一个类或模块应该有且只有一个引起它变化的原因。换句话说,一个类或模块应该只负责一项职责。

核心思想

职责的划分

将系统中的功能和行为划分为不同的职责,每个类或模块只负责一种相关的职责。这样可以使得类的职责更加明确和清晰,便于理解和维护。

单一变化原则

一个类或模块应该只有一个引起它变化的原因。如果一个类负责多种不相关的职责,那么对其中一个职责的修改可能会影响到其他职责,增加了代码的风险和复杂性。

高内聚性

类的内聚性指的是类内部的成员之间联系的紧密程度。遵守单一职责原则可以提高类的内聚性,使得类内部的成员相互关联度高,功能相关的代码放在同一个类中,便于理解和维护。

低耦合性

类之间的耦合性指的是彼此之间的依赖程度。遵守单一职责原则可以降低类之间的耦合性,使得类之间的依赖关系更加清晰和简单,减少代码的依赖和影响范围。

核心总结

单一职责原则的核心思想是将一个类或模块的职责限定在一个很小的范围内,使其只负责一种相关的功能或行为。这样可以保持类的高内聚性、低耦合性,提高代码的可读性、可维护性和可扩展性。
在这里插入图片描述

举例

假设我们有一个图书管理系统,其中包含了图书的借阅和归还功能。我们可以将这个系统划分为以下几个类:

图书类(Book)

负责表示图书的属性和行为,比如书名、作者、借阅状态等。

用户类(User)

负责表示用户的属性和行为,比如用户名、密码、借阅图书等。

图书管理类(Library)

负责管理图书的借阅和归还功能。
在这里插入图片描述

分析

在这个例子中,每个类都只负责一种相关的职责,符合了单一职责原则。图书类只负责表示图书的属性和行为,用户类只负责表示用户的属性和行为,图书管理类只负责管理图书的借阅和归还功能。

不遵守单一职责原则,可能引发的问题

类的职责不清晰

一个类负责了多种不相关的职责,使得代码难以理解和维护。

类的修改影响范围过大

当一个类负责多种职责时,对其中一个职责的修改可能会影响到其他职责,增加了代码的风险和复杂性。

难以重用和扩展

一个类负责多种职责时,可能会导致代码的耦合性增加,使得难以重用和扩展。
在这里插入图片描述

Java代码实现

// 图书类
class Book {private String title;private String author;private int pageCount;// 构造函数、getter和setter方法省略// 图书的展示功能public void display() {System.out.println("Title: " + this.title);System.out.println("Author: " + this.author);System.out.println("Page Count: " + this.pageCount);}
}// 图书管理类
class Library {private List<Book> books;// 构造函数、getter和setter方法省略// 图书的借阅功能public void borrowBook(Book book) {if (books.contains(book)) {books.remove(book);System.out.println("Borrowed book: " + book.getTitle());} else {System.out.println("Book not available for borrowing.");}}// 图书的归还功能public void returnBook(Book book) {books.add(book);System.out.println("Returned book: " + book.getTitle());}
}

在这里插入图片描述

程序分析

我们定义了两个类:Book和Library。Book类负责表示图书的属性和行为,包括展示图书的功能;Library类负责管理图书的借阅和归还功能。

通过将图书的展示功能和图书的借阅、归还功能分别放在不同的类中,我们遵守了单一职责原则。每个类只负责一种相关的职责,使得代码更加清晰和易于维护。

当我们需要使用这些功能时,可以直接调用相应的方法

Book book = new Book("Design Patterns", "Gang of Four", 400);
book.display();Library library = new Library();
library.borrowBook(book);
library.returnBook(book);

这样,我们可以很方便地使用图书的展示、借阅和归还功能,而不会影响到其他相关的功能。

总结

总结来说,单一职责原则是设计模式中的一项重要原则,它要求将功能划分得更加细致,使得每个类或模块
只负责一种相关的职责。遵守单一职责原则可以提高代码的可读性、可维护性和可扩展性。

http://www.lryc.cn/news/169232.html

相关文章:

  • ATF(TF-A) EL3 SPMC威胁模型-安全检测与评估
  • AI绘画Stable Diffusion原理之扩散模型DDPM
  • NSS [西湖论剑 2022]real_ez_node
  • MySQL常用函数集锦 --- 字符串|数值|日期|流程函数总结
  • GaussDB(DWS)云原生数仓技术解析:湖仓一体,体验与大数据互联互通
  • Navicat历史版本下载及地址组成分析
  • avue之动态切换表格样式问题
  • 彻底解决ruoyi分页后总数错误的问题
  • SpringMVC学习笔记——1
  • 20230908_python练习_selenium模块爬取网页小说练习
  • Python:安装Flask web框架hello world示例
  • 深度解析NLP文本摘要技术:定义、应用与PyTorch实战
  • zabbix监控多实例redis
  • win11将visual studio 2022的调试控制台改为windows terminal
  • 社区问答精选——长安链开发知多少?(8月)
  • 神经网络-Unet网络
  • Java | 多线程综合练习
  • Kotlin变量与控制条件的基本用法
  • 第18章_瑞萨MCU零基础入门系列教程之GPT
  • openssl websockets
  • Vue 组件的单元测试
  • 海底两万里的思维导图,轻松了解整体的内容
  • ZABBIX 6.4官方安装文档
  • 本地MQTT服务器搭建(EMQX)
  • Docker启动pandora并指定ACCESS TOKEN
  • Python + Jmeter 实现自动化性能压测
  • 【Linux进行时】进程状态
  • HarmonyOS开发环境搭建
  • 友思特新闻|友思特与IDS深化战略合作伙伴关系
  • ARM Linux DIY(十三)Qt5 移植