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

面向对象分析与设计40讲(6)设计原则之开闭原则

文章目录

    • 一、概念
    • 二、示例(C++ 实现)
      • 1. 违反开闭原则的示例
      • 2. 遵循开闭原则的示例

一、概念

开闭原则(Open-Closed Principle,OCP)是面向对象设计中的重要原则,由 Bertrand Meyer 提出,核心思想可以概括为:对扩展开放,对修改关闭

具体来说,一个软件实体(如类、模块、函数等)应当允许在不修改其源代码的前提下,通过扩展的方式来新增功能。这里的 “开放” 指的是允许扩展,“关闭” 指的是禁止修改原有代码。

遵循开闭原则的好处在于:

  • 减少修改原有代码带来的风险,避免引入新的 bug

  • 提高代码的可维护性和可扩展性

  • 使系统更加稳定,老功能不会因为新增功能而受到影响

实现开闭原则的关键是抽象化,通过定义抽象的接口或基类,让具体实现类去继承和扩展,而高层模块只依赖于抽象,不依赖具体实现。

开闭原则是一种结果,一种指导思想,并非手段,想实现开闭原则,还得借助抽象来实现。
在这里插入图片描述

二、示例(C++ 实现)

1. 违反开闭原则的示例

假设我们需要实现一个简单的图形计算器,计算不同图形的面积。如果不遵循开闭原则,可能会这样写:

http://www.dtcms.com/a/293106.html

相关文章:

  • Go语言初识--标识符 可见性
  • 数据库表介绍
  • ArcGIS地形起伏度计算
  • javaweb小案例1
  • Linux打开、读写一个文件内核做了啥?
  • python安装package和pycharm更改环境变量
  • MySQL:内置函数
  • 基于模拟的流程为灵巧机器人定制训练数据
  • 钢铁逆行者:Deepoc具身智能如何重塑消防机器人的“火场直觉”
  • CY3-NH2/amine 使用注意事项
  • 【nginx】隐藏服务器指纹:Nginx隐藏版本号配置修改与重启全攻略
  • Adaptive Graph Convolutional Network for Knowledge Graph Entity Alignment
  • 基于LangGraph的Open Deep Research架构全解析:从多Agent协作到企业级落地
  • 数据库设计mysql篇
  • 什么是检索增强生成(RAG)?
  • java调用周立功USBCAN SDK读取汽车总线数据
  • [3-02-02].第04节:开发应用 - RequestMapping注解的属性2
  • TCP头部
  • Kotlin伴生对象
  • Go后端配置文件教程
  • LeetCode|Day22|231. 2 的幂|Python刷题笔记
  • AI一周事件(2025年7月15日-7月21日)
  • 开发避坑短篇(4):跨域请求中Session数据丢失的排查与修复方案
  • Qt资源系统:如何有效管理图片和文件
  • 【黑马SpringCloud微服务开发与实战】(五)微服务保护
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 访问鉴权功能实现
  • MMDeploy模型转换与TensorRT推理遇到问题及解决方案
  • GRU模型
  • Trae安装指定版本的插件
  • Clickhouse源码分析-副本数据同步