面向对象的设计法则3[Software Entities Should Be Open For Extension, Yet Closed For Modification ]

来源:互联网 发布:证券公司 网络金融 编辑:程序博客网 时间:2024/05/19 20:19
 

法则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 译)


  •