前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >开闭原则

开闭原则

作者头像
Yuyy
发布2022-09-21 10:10:27
2120
发布2022-09-21 10:10:27
举报
文章被收录于专栏:yuyy.info技术专栏

开闭原则

定义

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

个人理解

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

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

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-11-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开闭原则
    • 定义
      • 个人理解
        • 如何理解“对扩展开放、对修改关闭”?
          • 如何做到“对扩展开放、修改关闭”?
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档