开闭原则
本文最后更新于 987 天前,其中的信息可能已经有所发展或是发生改变。

开闭原则

定义

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

个人理解

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

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

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

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

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

作者:Yuyy
博客:https://yuyy.info
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇