# 开闭原则

> 在面向对象编程领域中，开闭原则 (The Open/Closed Principle, OCP) 规定“软件中的对象（类，模块，函数等等）应该对于扩展是开放的，但是对于修改是封闭的”，这意味着一个实体是允许在不改变它的源代码的前提下变更它的行为。该特性在产品化的环境中是特别有价值的，在这种环境中，改变源代码需要代码审查，单元测试以及诸如此类的用以确保产品使用品質的过程。遵循这种原则的代码在扩展时并不发生改变，因此无需上述的过程。 开闭原则的命名被应用在两种方式上。这两种方式都使用了继承来解决明显的困境，但是它们的目的，技术以及结果是不同的。

- ID: m01239
- 分类: create
- 领域: 设计思维

## 定义

软件实体（类、模块、函数）应该对扩展开放，对修改关闭。即在不修改现有代码的情况下，通过添加新代码来引入新功能。脚手架作用：拥抱变化的架构。在设计规则或流程时，预留“插件接口”。当新情况发生时，不需要推翻重来（修改），只需要插上一个新的插件（扩展）。

## 机制

开闭原则（OCP）要求软件实体对扩展开放、对修改关闭：新增行为应尽量通过扩展而非改动已有代码，从而降低回归风险、提升稳定性。

## 练习

识别易变维度；用抽象（接口/基类）隔离稳定与变化；通过实现新类扩展；避免为加功能去改旧逻辑。

## 脚手架用法

拥抱变化的架构。在设计规则或流程时，预留“插件接口”。当新情况发生时，不需要推翻重来（修改），只需要插上一个新的插件（扩展）。

[阅读网页](https://thinkingmodels.site/entries/detail/m01239)
