“开-闭”原则(Open-Closed Principle)

1.1   “开-闭”原则(Open-Closed Principle)

1.1.1 作用

它指导我们如何提高代码的可扩展性!

1.1.2 定义

(1)Open(Open for extension)

模块的行为必须是开放的、支持扩展的,而不是僵化的。

(2)Closed(Closed for modification)

在对模块的功能进行扩展时,不应该影响或大规模地影响已有的程序模块。

换句话说,也就是要求开发人员可以在不修改系统中现有的功能代码(源代码或者二进制代码、模块的二进制可执行版本,无论是可链接的库、DLL或者Java的.jar文件)的前提下,而实现对应用系统的软件功能进行扩展。

一个软件实体应该对扩展开放,对修改关闭。也就是说在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展。换言之,应当可以在不必修改源代码的情况下改变这个模块的行为。这个原则实际上是对“对可变性的封闭原则“:找到一个系统的可变因素,将之封装起来。这个原则意昧着两点:

1)一个可变性不应当散落在代码的很多角落里,而应当被封装到一个对象里面。同一种可变性的不同表象意昧着同一个继承等级结构中的具体子类。继承就当被看作是封装变化的方法,而不应当被认为是从一般的对象生成特殊对象的方法。

2)一种可变性不应当与另一种可变性混合在一起。(所有类图的继承结构一般不会超过两层,不然就意昧着将两种不同的可变性混合在了一起。)

这个原则是总的原则,其它几条是这个原则的手段和工具。

开闭原则要点:

1) 任何系统在其生命周期内都会变化

2) 变化应该是导致添加新的代码,而不是修改已经正常运行的代码

3) OCP的关键是抽象,应该仅仅对程序中呈现出频繁变化的那些部分作出抽象

4) 接口和客户的关系要比实现它的类和客户的关系更密切

5) 策略模式和模板模式是用以满足OCP的最常用方法

6) 没有对于所有情况都贴切的模型,也即不可能完全封闭,所以应该预先猜测出最有可能的变化种类

7)  拒绝不成熟的抽象和抽象本身一样重要

8) 从另外一个角度讲,就是所谓的“对可变性封装原则”。“对可变性封装原则”意味着,一种可变性不应当散落在代码的很多角落里,而应当被封装到一个对象里面,同一种可变性的不同表象意味着同一个继承等级结构中的具体子类;一种可变性不应当与另一种可变性混合在一起,即类图的继承结构一般不应超过两层

1.1.3 开闭原则分析

抽象化是开闭原则的关键,构造抽象隔离变化。

绝大部分的设计模式都符合开闭原则,在对每一个模式进行优缺点评价时都会以开闭原则作为一个重要的评价依据,以判断基于该模式设计的系统是否具备良好的灵活性和可扩展性。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值