开放-封闭原则(OCP)

开放-封闭原则指出:软件的实体(类、模块、函数等)应该是可以扩展的,但是不可修改的。

遵循开放-封闭原则设计出的模块具有两个主要的特征:

1. “对于扩展是开放的” (Open for extension)。

这意味着模块的行为是可以扩展的,当应用的需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为,换句话说,我们可以改变模块的功能。

2. “对于更改是封闭的” (Closed for modification)。

对模块行为进行扩展时,不必改动模块的源代码或者二进制代码,模块的二进制可执行版本,无论是可链接的库、DLL或JAVA 的.jar文件,都无需改动。

一般而言,无论模块是多么的“封闭”,都会存在一些无法对之封闭的变化,没有对于所有情况都贴切的模型。

遵循OCP的代价也是昂贵的。创建正确的抽象是要花费开发时间和精力的。同时,那些抽象也增加了软件的复杂性。开发人员有能力处理的抽象数量也是有限的。显然,我们希望把OCP的应用限定在可能会发生的变化上。

 隔离变化:

1. “只受一次愚弄”,这意味着在我们最初编写代码时,假设变化不会发生;当变化发生时,我们就创建抽象来隔离以后发生的同类变化。

2. 刺激变化。

  • 我们首先编写测试
  • 我们使用很短的迭代周期进行开发——一个周期为几天而不是几周
  • 我们在加入基础结构之前就开发特性,并且经常性的把那些特性展示给涉众
  • 我们首先开发最重要的特性
  • 尽早的、经常的发布软件

OCP是面向对象设计的基础,也是很复杂的规则,我们需要在日常的开发中不断的去研究和发现它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值