面向对象设计原则--开放封闭原则(OCP)

原创 2007年10月08日 16:20:00

名思义,既开放又封闭,对扩展是开放的,对更改是封闭的!

扩展即扩展现行的模块,当我们软件的实际应用发生改变时,出现新的需求,就需要我们对模块进行扩展,使其能够满足新的需求!

更改封闭即是在我们对模块进行扩展时,勿需对源有程序代码和DLL进行修改或重新编译文件!

这个原则对我们在设计类的时候很有帮助,坚持这个原则就必须尽量考虑接口封装,抽象机制和多态技术!

举个典型的例子,现在我们要写一个机动车类,机动车有汽车,摩托车,电动车等多种车型
如果我们不坚持OCP,直接写一个类封装机动车的开车,刹车,停车等基本方法
而每种车型对这些方法的具体实现细节是不尽相同的!
如果我们允许修改,即把现在所能想到的所能看见的车型都放在一个类里实现(通过方法重载或者方法内判断),谁也不能保证未来会否出现新的机动车型,一旦出现新的机型,而在软件中必须要实现这种车型,这个时候我们能做的只有找出这个类文件
在每个方法里加上这种车型的实现细节并重新编译成DLL!虽然在.NET的运行环境中,我们只要将新的DLL覆盖到原有的DLL即可,
并不影响现有程序的正常运行,但每次出现新情况都要找出类文件,添加新的实现细节,这个类文件不断扩大,以后维护起来
就变的越来越困难,也并不满足我们以前说的单一职责原则(SAP),因为每一种车型的变化都会引起对这个类的改变动机!

如果我们在设计这个类的时候坚持了OCP的话,把机动车型的公共方法抽象出来做成一个接口,封闭修改,在客户端(使用该接口的类对象)只依赖这个接口来
实现对自己所需要的车型,以后在新的功能模块中需要新的车型,只要扩展一个具体车型实现我们先前定义的接口,就可以正常使用,而不比
重新修改原有类文件!
这也是我们注重在设计类的时候坚持开放封闭的原则! 

下面是我用ROSE画出我上面所举例子的UML图

设计模式六大原则——开放封闭原则(OCP)

什么是开闭原则?       定义:是说软件实体(类、模块、函数等等)应该可以扩展,但是不可修改。       开闭原则主要体现在两个方面:       1、对扩展开放,意味着有新的需求或变化时,可以...
  • u010853701
  • u010853701
  • 2014年04月30日 20:37
  • 3046

设计模式六大原则例子(六)-- 开放封闭原则(OCP)例子

之前我们对设计模式的六大原则做了简单归纳,这篇博客是对开放封闭原则进行的举例说明。 开放封闭原则的意义软件实体应该对扩展开放,对修改关闭,其含义是说一个软件实体应该通过扩展来实现变化,而不是通过修改已...
  • yabay2208
  • yabay2208
  • 2017年06月30日 11:53
  • 326

java设计模式_开放封闭原则

一、什么是开放封闭原则 开放封闭原则(Open-Closed Principle):一个软件实体 应当对扩展开放,则修改关闭。 在设计一个模块时,应当使得这个模块可以在不被修 改的前提下被扩...
  • wwww_com
  • wwww_com
  • 2016年08月11日 21:26
  • 775

设计模式六大原则: 一国两制 -- 开放封闭原则

开放封闭原则 OCP(Open Closed Principle ) 对于拓展是开放的(Open for extension), 对于更改是封闭的(Closed for modification)...
  • u011240877
  • u011240877
  • 2016年08月11日 23:27
  • 2046

开放-封闭原则详解--七大面向对象设计原则(5)

开闭原则来源:        在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试...
  • fanyun_01
  • fanyun_01
  • 2016年07月16日 07:20
  • 543

java-开放—封闭原则

我们日常用的手机软件隔上一段时间就会有新的版本
  • a980150976
  • a980150976
  • 2014年11月04日 09:16
  • 953

开放-封闭原则

核心思想 开放-封闭原则:是指软件实体(类、模块、函数等等)应该可以扩展...
  • loonsd
  • loonsd
  • 2016年01月04日 14:12
  • 1308

php面向对象的设计原则之开发-封闭原则(OCP)

php面向对象的设计原则之开发-封闭原则,体现该原则的关于播放器的一个简单举例。...
  • dnidong
  • dnidong
  • 2017年02月26日 10:07
  • 254

设计原则——开放封闭原则(Open Close Principle)

定义 开闭原则是对系统在面对变化时所表现的特征的描述:对于扩展是开放的(Open for extension),而对于修改是封闭的(Closed for modification)1。它是一种现象...
  • Strang_
  • Strang_
  • 2016年08月07日 00:29
  • 193

设计模式六大原则之--开闭原则(OCP)

1.开闭原则:Open Closed Principle, OCP) 定义:Software entities like classes, modules and functions s...
  • benbenxiongyuan
  • benbenxiongyuan
  • 2014年04月18日 15:21
  • 1949
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:面向对象设计原则--开放封闭原则(OCP)
举报原因:
原因补充:

(最多只允许输入30个字)