OO设计原则 — The Open-Closed Principle:开放/封闭原则(OCP)

对于一个软件的实体(类,模块,函数等)应该是可以扩展的,但是不可被修改。

一、概要

开放/封闭原则(The Open-Closed Principle:OCP)是在面向对象设计中,类和模块等必须遵循以下规则:

◇ 对于功能的扩展因该是开放的,即可以追加机能。

◇ 对于修改是封闭的,即既存的机能的实体是不可以修改的。

以上两条规则就是说“软件实体应当在不修改的前提下扩展”

开放/封闭原则(OCP)是面向对象设计的最基本的原则。也是之后的面向对象设计原则,

Package设计原则以及设计模式的基础。

二、OCP的优点

◇ 很好的扩展性。OCP的对于扩展的开发原则,当系统要扩展或者添加新的行为的时候

       只需要添加 另外实现的模块即可。

◇  提供软件的安定性、稳定性。OCP的修改封闭原则,要在不修改既存代码的基础上

       进行机能的追加,对原机能影响很小,确保了安全性,同时也保证了原有机能的稳定性。

◇ 再利用性。根据OCP原则设计的类和模块,一般都是可以设计出可重用的机能的抽象和接口等。

      同时,软件的各部分的耦合度也会很低,,使程序模块互换成为可能;

三、OCP实现的手法

实现OCP关键在于抽象,抽象出来的东西是不变的,具体的实现继承于抽象,所以保证了对修改的Close,

而抽象的实现方式有多种,可以随需添加,当然这也就是对扩展的Open。 另外要求的是技术包括,

多态 Polymorphism,接口 Interface,继承 Inheritance. 一般的抽象步骤如下:

◇ 分析机能。

◇ 定义出不需要修改的可以被再利用的Interface。

◇ 通过继承Interface类,来实现机能的扩展和追加。

 

另外在对可变性进行封装的时候也应该注意以下几点:

◇ 识别系统有可能变化的地方。 

◇ 不要将一种可变形散布在多处代码,而应该封装起来。

◇ 不要将一种可变性与另外一种可变性混在一起。  

◇ 两种安全的实现开闭原则的设计模式是:Strategy pattern(策略模式),

      Template Methord(模版方法模式)。

◇ 依据开闭原则,我们尽量不要修改类,只扩展类,但在有些情况下会出现一些比较怪异的

       状况,这时可以采用几个类进行组合来完成。

◇ 将可能发生变化的部分封装成一个对象,如: 状态, 消息,,算法,数据结构等等,

      封装变化是实现"开闭原则"的一个重要手段,如经常发生变化的状态值,如温度,气压,颜色,积分,

     排名等等,可以将这些作为独立的属性,如果参数之间有关系,有必要进行抽象。

     对于行为,如果是基本不变的,则可以直接作为对象的方法,否则考虑抽象或者封装这些行为。


但是,由于软件的不确定性等原因,要想100%的按照OCP原则来进行软件设计是很困难的,

所以,我们实际过程中应该是尽可能的遵守OCP原则,而不是一味必须所有的都要遵守。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值