面向对象分析与设计40讲(6)设计原则之开闭原则
文章目录
-
- 一、概念
- 二、示例(C++ 实现)
-
- 1. 违反开闭原则的示例
- 2. 遵循开闭原则的示例
一、概念
开闭原则(Open-Closed Principle,OCP)是面向对象设计中的重要原则,由 Bertrand Meyer 提出,核心思想可以概括为:对扩展开放,对修改关闭。
具体来说,一个软件实体(如类、模块、函数等)应当允许在不修改其源代码的前提下,通过扩展的方式来新增功能。这里的 “开放” 指的是允许扩展,“关闭” 指的是禁止修改原有代码。
遵循开闭原则的好处在于:
-
减少修改原有代码带来的风险,避免引入新的 bug
-
提高代码的可维护性和可扩展性
-
使系统更加稳定,老功能不会因为新增功能而受到影响
实现开闭原则的关键是抽象化,通过定义抽象的接口或基类,让具体实现类去继承和扩展,而高层模块只依赖于抽象,不依赖具体实现。
开闭原则是一种结果,一种指导思想,并非手段,想实现开闭原则,还得借助抽象来实现。
二、示例(C++ 实现)
1. 违反开闭原则的示例
假设我们需要实现一个简单的图形计算器,计算不同图形的面积。如果不遵循开闭原则,可能会这样写: