首页/开发/代码质量与评审速查/开闭原则 OCP(Open-Closed Principle)
设计原则与模式62 条

开闭原则 OCP(Open-Closed Principle)

软件实体应对外扩展开放、对修改关闭(Bertrand Meyer 提出):新增行为靠扩展(新实现、新分支集中于注册点),而不是改动被反复触碰的旧逻辑。

提出Bertrand Meyer(1988)
落地策略、多态、插件注册、配置驱动
配合先稳定变化点,再定义扩展接口

扩展点形态

扩展点形态
// 新增支付方式:只新增类 + 注册,不改调用链
interface PaymentMethod { PayResult pay(Order o); }
class Alipay implements PaymentMethod { ... }
class WechatPay implements PaymentMethod { ... }
OCP 不是「永不修改」:扩展点本身仍会演进,只是把变化集中到少量稳定接口。

易错点

  • 为每个改动都硬找扩展点:抽象层暴增,简单需求变复杂
  • 只加分支不改结构(switch 越堆越长):仍是修改驱动

数据来源与参考

  • Bertrand Meyer《Object-Oriented Software Construction》(1988)OCP 原始表述
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌