面向对象的设计法则3[Software Entities Should Be Open For Extension, Yet Closed For Modification ]
2011-07-26 12:00
239 查看
法则3:开放-封闭法则(OCP)
软件组成实体应该是可扩展的,但是不可修改的。
[ Software Entities Should Be Open For Extension, Yet Closed For Modification ]
开放-封闭法则
1.开放-封闭法则认为我们应该试图去设计出永远也不需要改变的模块。2我们可以添加新代码来扩展系统的行为。我们不能对已有的代码进行修改。
3.符合OCP的模块需满足两个标准:
4.可扩展,即"对扩展是开放的"(Open For Extension)-模块的行为可以被扩展,以需要满足新的需求。
5.不可更改,即"对更改是封闭的"(Closed for Modification)-模块的源代码是不允许进行改动的。
6.我们能如何去做呢?
a.抽象(Abstraction)
b.多态(Polymorphism)
c.继承(Inheritance)
d.接口(Interface)
7. 一个软件系统的所有模块不可能都满足OCP,但是我们应该努力最小化这些不满足OCP的模块数量。
8.开放-封闭法则是OO设计的真正核心。
9.符合该法则便意味着最高等级的复用性(reusability)和可维护性(maintainability)。
单选法则
单选法则(the Single Choice Principle)是OCP的一个推论。无论在什么时候,一个软件系统必须支持一组备选项,理想情况下,在系统中只能有一个类能够知道整个的备选项集合。
一些面向对象的设计法则:(Bob Tarr 著,outmyth 译)
相关文章推荐
- 面向对象分析设计学习与探索(六):好的设计=软件的灵活程度(good design=flexible software)继续
- 面向对象设计模式的核心法则
- 面向对象设计/编程的四大法则
- 面向对象设计模式的核心法则
- Java面向对象设计编程思想(Essential Object Oriented Software Construction)的本质----百家争鸣 陈光剑
- 面向对象的设计法则(1)——优先使用(对象)组合,而非(类)继承
- 面向对象的设计法则
- 面向对象分析设计学习与探索(六):好的设计=软件的灵活程度(good design=flexible software)
- [设计模式]面向对象设计原则之迪米特法则(最少知道法则)
- 在实体对象中访问导航属性里的属性值出现异常“There is already an open DataReader associated with this Command which must be closed first”
- 面向对象的设计法则1[Favor Composition Over Inheritance]
- 面向对象设计中的“六原则一法则”
- 面向对象设计模式的核心法则
- 软件工程-面向对象设计与法则
- 面向对象的设计法则4
- 面向对象的设计法则 2
- 面向对象设计原则之迪米特法则 .
- 面向对象设计模式的核心法则
- C语言的面向对象设计 —— 对 X264/FFMPEG 架构探讨
- 面向对象的设计模式原则