开闭原则

2022-09-21 10:10:27 浏览数 (1)

开闭原则

定义

英文全称是Open Closed Principle,软件实体(模块、类、方法等)应该“对扩展 开放、对修改关闭”。

个人理解

  1. 在设计阶段,需要识别出哪些是不变的,哪些将来有可能改变的,留好扩展点。
  2. 寻找共性,进行抽象。通用的抽取封装到基类,同类型的、需要扩展的抽取为抽象方法。

如何理解“对扩展开放、对修改关闭”?

添加一个新的功能,应该是通过在已有代码基础上扩展代码(新增模块、类、方法、属性 等),而非修改已有代码(修改模块、类、方法、属性等)的方式来完成。关于定义,我们有两点要注意。第一点是,开闭原则并不是说完全杜绝修改,而是以最小的修改代码的代价来完成新功能的开发。第二点是,同样的代码改动,在粗代码粒度下,可能被认定为“修改”;在细代码粒度下,可能又被认定为“扩展”。

如何做到“对扩展开放、修改关闭”?

我们要时刻具备扩展意识、抽象意识、封装意识。在写代码的时候,我们要多花点时间思考 一下,这段代码未来可能有哪些需求变更,如何设计代码结构,事先留好扩展点,以便在未 来需求变更的时候,在不改动代码整体结构、做到最小代码改动的情况下,将新的代码灵活 地插入到扩展点上。 很多设计原则、设计思想、设计模式,都是以提高代码的扩展性为最终目的的。特别是23种 经典设计模式,大部分都是为了解决代码的扩展性问题而总结出来的,都是以开闭原则为指 导原则的。最常用来提高代码扩展性的方法有:多态、依赖注入、基于接口而非实现编程, 以及大部分的设计模式(比如,装饰、策略、模板、职责链、状态)。

0 人点赞