加载中...
开闭原则是面向对象设计的核心准则之一,由伯特兰·迈耶提出。它主张软件实体应对扩展开放、对修改关闭,即通过增加新代码来扩展功能,而不是改动已有的、经过验证的稳定代码。

| 中文名 | 开闭原则 |
| 外文名 | Open-Closed Principle |
| 提出者 | 伯特兰·迈耶 |
| 提出时间 | 一九八八年 |
| 核心 | 对扩展开放、对修改关闭 |
开闭原则是面向对象设计原则中最具代表性的一条,由计算机科学家伯特兰·迈耶(Bertrand Meyer)在一九八八年的著作中首次提出。它的核心表述是:软件实体(类、模块、函数等)应当对扩展开放,对修改关闭。
所谓对扩展开放,是指当需求变化时,可以通过增加新的代码单元来赋予系统新的行为;所谓对修改关闭,是指这种扩展不应以修改现有源代码为代价。这样一来,已经通过测试、正在稳定运行的代码得以保持不动,从而降低引入回归缺陷的风险。
典型例子是图形绘制系统:若把面积计算写成对不同图形类型的一长串分支判断,每新增一种图形就得修改这段代码,违反了开闭原则;改为让每种图形实现统一的面积接口后,新增图形只需增加一个类,原有代码无需改动。各类框架的插件体系、支付渠道的可插拔接入、日志与序列化的可替换实现,都是该原则的实际应用。
问:完全不修改现有代码可能吗?答:很难做到绝对,原则追求的是让核心稳定代码尽量不被频繁改动。合理的抽象能覆盖大多数可预见的变化方向,但过度抽象也会带来复杂度,需要权衡。
问:开闭原则和里氏替换原则有何联系?答:开闭原则常通过继承和多态实现扩展,而里氏替换原则保证子类能安全替换父类,是开闭原则可靠落地的保障,两者相辅相成。

| 中文名 | 开闭原则 |
| 外文名 | Open-Closed Principle |
| 提出者 | 伯特兰·迈耶 |
| 提出时间 | 一九八八年 |
| 核心 | 对扩展开放、对修改关闭 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧