开闭原则(Open-Closed Principle,或者OCP)

转载 2007年09月24日 17:39:00
开闭原则讲的是:一个软件实体应当对扩展是开放的,对修改关闭。

 

满足开闭原则的设计可以给一个软件系统两个无可比拟的优越性:
1、 通过扩展已有的软件系统,可以提供新的行为,以满足对软件的新的需求,使变化中的软件系统有一定的适应性和灵活性。
2、 已有的软件模块,特别是最重要的抽象层模块不能再修改,这就使变化中的软件系统有一定的稳定性和延伸性。
具有这两个有点的软件系统是一个在高层次上实现了复用的系统,也是一个易于维护和扩展的系统。

 

A、 抽象化是关键:

 

在JAVA语言里,可以给出一个或多个抽象JAVA类或JAVA接口,规定出所有的具体类必须提供的方法的特征(Signature)作为系统设计的抽象层。
1、 这个抽象层预见了所有的可能扩展,因此,在任何扩展情况下都不会改变。(闭)
2、 从抽象层导出一个或多个新的具体类可以改变系统的行为。(开)

B、 可变性的封装:

 

开闭原则从另一个角度来讲,就是所谓的对可变性的封装。找到一个系统的可变因素,将它封装起来。
1、 一种可变性不应当散落在代码的很多角落,而应当被封装在一个对象里面。同一种可变性的不同表象意味着同一个继承等级结构中的具体子类。
2、 一种可变性不应当与另一种可变性混合在一起。

 

例:
http://liudang.blogbus.com/files/1155200824.jpg
尽管在很多情况下,无法百分之百地做到开闭原则,但是如果向这个方向上的努力能够得到部分的成功,也可以显著的改善一个系统的结构。
 
 

开闭原则——open-closed principle, ocp

原则定义 一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。 现实理解 比如说当美化卧室构造时,我们尽可能贴墙纸,增加摆件,尽量避免在墙体基础上做修改。 提...
  • Belle_2
  • Belle_2
  • 2017年05月04日 09:57
  • 80

“开闭原则”(Open-Closed Principle,OCP

面向对象的可复用设计(Object Oriented Design,OOD)的第一块基石,便是所谓的“开闭原则”(Open-Closed Principle,OCP).     开闭原则讲得是:一个...
  • tfy1332
  • tfy1332
  • 2013年03月08日 22:56
  • 1363

OCP简介(OCP--Open-Closed Principle)

 OCP简介(OCP--Open-Closed Principle):Software entities(classes,modules,functions,etc.) should be open ...
  • mydriverc
  • mydriverc
  • 2007年06月20日 13:12
  • 778

第九章 OCP:The Open-Closed Principle(开闭原则)

     Open-Closed Principle,即开闭原则,由Bertrand Meyer在1988年提出,原话是:Software entities(classes,modules,funct...
  • moonpuppet
  • moonpuppet
  • 2006年08月07日 17:11
  • 645

软件设计原则(一)开闭原则(Open-Closed Principle, OCP)

在学习设计模式之前,应该先对软件设计原则有一定的了解,设计模式在一定程度上是迎合软件设计原则而产生的,脱离了软件设计原则,设计模式是没有意义的。 开-闭原则(Open-Closed Principle...
  • qq_36330643
  • qq_36330643
  • 2017年05月10日 17:00
  • 225

设计模式六大原则——开闭原则(OCP,Open Close Principle)

简介开闭原则(OCP)是面向对象设计中“可复用设计”的基石,是面向对象设计中最重要的原则之一,其它很多的设计原则都是实现开闭原则的一种手段。1988年,勃兰特·梅耶(Bertrand Meyer)在他...
  • chy555chy
  • chy555chy
  • 2016年11月10日 20:10
  • 443

开闭原则(Open-Closed Principle)

Bertrand Meyer在 1988 年提出了 “开闭”原则,英文全称为 Open-Closed Principle,通常被简写为 OCP 。这是一条非常著名的原则,内容如下: Software ...
  • lujing_angelar
  • lujing_angelar
  • 2008年08月04日 17:45
  • 225

The Open-Closed Principle (OCP) - OO设计的开闭原则

 Software entities (classes, modules, function, etc.) should be open for extension, but closed for m...
  • siva945
  • siva945
  • 2009年02月13日 10:19
  • 171

The Open-Closed Principle (OCP) - 面向对象软件设计的开闭原则

 The Open-Closed Principle (OCP) - 面向对象软件设计的开闭原则全文:http://www.lifevv.com/sysdesign/doc/2007111711305...
  • mty
  • mty
  • 2007年12月11日 21:44
  • 268

开放封闭原则(The Open-Closed Principle 、OCP)

抽象依赖原则:为了应对需求变化,代码中要尽可能地使用(依赖)抽象类型,而非具体类。 而不把开放封闭原则(The Open-Closed Principle 、OCP)作为重点加以介绍,主要是因为开放封...
  • yqj2065
  • yqj2065
  • 2016年12月07日 18:01
  • 731
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:开闭原则(Open-Closed Principle,或者OCP)
举报原因:
原因补充:

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