【开闭原则 - 六大设计原则 - 设计模式】

160 阅读2分钟

开闭原则(Open-Close Principle,OCP)

官方定义:开闭原则规定软件中的对象、类、模块和函数对扩展应该是开放的,但对于修改是封闭的。这意味着应该有抽象定义结构,用具体实现扩展细节,以此确保软件系统和维护过程的可靠性。

定义:对扩展开发,对修改关闭

对扩展开放和对修改关闭表示当一个类或一个方法有新需求或者需求发生改变时应该采用扩展的方式而不应该采用修改原有逻辑的方式来实现。因为扩展了新的逻辑如果有问题只会影响新的业务,不会影响老业务;而如果采用修改的方式,很有可能就会影响到老业务。 开闭原则是所有设计模式最核心目标,也是最难实现的目标,但是所有的软件设计模式都应该以开闭原则当作标准,才能使软件更加稳定和健壮。

优点:

  1. 新老逻辑解藕,需求发生改变不会影响老业务的逻辑
  2. 改动成本最小,只需要追加新逻辑,不需要改的老逻辑
  3. 提供代码的稳定性和可扩展性

场景示例

系统A与系统B之间进行数据传输使用的是A版本的协议,一年后对A版本的协议进行了修正。

设计时应该考虑的数据传输协议的可变性,抽象出具体校验、编制等所有版本协议使用的通用方法,调用方针对接口进行编程即可,如上示例设计类图如下

截屏2023-01-09 20.24.14.png

调用房依赖于接口,接口是稳定的,而不是针对具体的A协议或者A协议(修正版本)。利用接口多态技术,实现开闭原则。

写代码的时候,多花点时间去思考,代码在未来可能的变更、如何设计代码结构,事先留好扩展点,以便需求变更的时候,不需要改动代码整体结构、做到最小改动的情况下,新的代码能够灵活插入到扩展点上,做到“对扩展开放,对修改关闭”