欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 美景 > SOLID原则学习,单一职责原则(Single Responsibility Principle)

SOLID原则学习,单一职责原则(Single Responsibility Principle)

2025/6/20 20:06:51 来源:https://blog.csdn.net/Allen_Spring/article/details/145019002  浏览:    关键词:SOLID原则学习,单一职责原则(Single Responsibility Principle)

在这里插入图片描述

文章目录

  • 1. 定义
  • 2. 核心思想
  • 3. 优点
  • 4. 总结


1. 定义

单一职责原则是面向对象设计中的五大原则(SOLID)之一,由Robert C. Martin提出。它指出一个类应该只有一个引起它变化的原因,即一个类应该只负责一项职责。


2. 核心思想

职责:指的是类所承担的任务或功能。
单一:一个类应该只负责一个功能领域中的一项职责。

3. 优点

  • 高内聚:类的职责单一,功能集中,代码更易理解和维护。

  • 低耦合:职责分离后,类之间的依赖减少,修改一个类不会影响其他类。

  • 可复用性:职责单一的类更容易在其他地方复用。

  • 可测试性:职责单一的类更容易进行单元测试。

举例说明
假设我们有一个类 Report,它负责生成报告并将其打印出来。这个类违反了单一职责原则,因为它承担了两项职责:生成报告和打印报告。
违反SRP的代码:

class Report {
public:void generateReport() {// 生成报告的逻辑std::cout << "Generating report..." << std::endl;}void printReport() {// 打印报告的逻辑std::cout << "Printing report..." << std::endl;}
};

在这个例子中,Report 类负责生成报告和打印报告。如果未来需要修改生成报告的逻辑或打印报告的逻辑,都需要修改 Report 类,这增加了类的复杂性和维护成本。


遵循SRP的代码:
为了遵循单一职责原则,我们可以将 Report 类拆分为两个类:ReportGenerator 和 ReportPrinter,分别负责生成报告和打印报告。

class ReportGenerator {
public:void generateReport() {// 生成报告的逻辑std::cout << "Generating report..." << std::endl;}
};class ReportPrinter {
public:void printReport() {// 打印报告的逻辑std::cout << "Printing report..." << std::endl;}
};

现在,ReportGenerator 类只负责生成报告,ReportPrinter 类只负责打印报告。这样,每个类都只有一个职责,代码更加清晰,易于维护和扩展。
使用示例:

int main() {ReportGenerator generator;ReportPrinter printer;generator.generateReport();  // 生成报告printer.printReport();       // 打印报告return 0;
}

4. 总结

单一职责原则通过将类的职责分离,使得每个类都专注于一个功能领域,从而提高了代码的可维护性、可复用性和可测试性。在实际开发中,遵循SRP可以帮助我们设计出更加清晰、灵活的软件系统。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词