Programming 版 (精华区)

发信人: JJason (总统~~), 信区: Programming
标  题: 开放-封闭法则(OCP)(转载)
发信站: 哈工大紫丁香 (2003年01月12日20:37:59 星期天), 站内信件

【 以下文字转载自 SoftEng 讨论区 】
【 原文由 esier 所发表 】
软件组成实体应该是可扩展的,但是不可修改的。
[ Software Entities Should Be Open For Extension, Yet Closed For 
Modification ]

开放-封闭法则
    开放-封闭法则认为我们应该试图去设计出永远也不需要改变的模块。
    我们可以添加新代码来扩展系统的行为。我们不能对已有的代码进行修改。
    符合OCP的模块需满足两个标准:
    可扩展,即"对扩展是开放的"(Open For Extension)-模块的行为可以被扩展
,以需要满足新的需求。
    不可更改,即"对更改是封闭的"(Closed for Modification)-模块的源代码
是不允许进行改动的。
    我们能如何去做呢?
    抽象(Abstraction)
    多态(Polymorphism)
    继承(Inheritance)
    接口(Interface)

    一个软件系统的所有模块不可能都满足OCP,但是我们应该努力最小化这些不满
足OCP的模块数量。
    开放-封闭法则是OO设计的真正核心。
    符合该法则便意味着最高等级的复用性(reusability)和可维护性(
maintainability)。

单选法则
    单选法则(the Single Choice Principle)是OCP的一个推论。
    单选法则:
    无论在什么时候,一个软件系统必须支持一组备选项,理想情况下,在系统中只能
    有一个类能够知道整个的备选项集合。

--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.112.26.39]
--
※ 转载:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: 202.118.229.69]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:4.403毫秒