fbpx
维基百科

开闭原则

面向对象编程领域中,开闭原则 (The Open/Closed Principle, OCP) 规定“软件中的对象(类,模块,函数等等)应该对于扩展是开放的,但是对于修改是封闭的”[1],这意味着一个实体是允许在不改变它的源代码的前提下变更它的行为。该特性在产品化的环境中是特别有价值的,在这种环境中,改变源代码需要代码审查单元测试以及诸如此类的用以确保产品使用品質的过程。遵循这种原则的代码在扩展时并不发生改变,因此无需上述的过程。

开闭原则的命名被应用在两种方式上。这两种方式都使用了继承来解决明显的困境,但是它们的目的,技术以及结果是不同的。

梅耶开闭原则 编辑

伯特蘭·邁耶一般被认为是最早提出开闭原则这一术语的人,[來源請求]在他1988年发行的《面向对象软件构造》中给出。这一想法认为一旦完成一个类的实现只应该因错误而修改,新的或者改变的特性应该通过新建不同的类实现。新建的类可以通过继承的方式来重用原类的代码。衍生的子类可以或不可以拥有和原类相同的接口。

梅耶的定义提倡实现继承。具体实现可以通过继承方式来重用,但是接口规格不必如此。已存在的实现对于修改是封闭的,但是新的实现不必实现原有的接口。

多态开闭原则 编辑

在20世纪90年代,由于抽象化接口的使用,开闭原则被广泛的重新定义。在这中间实现可以被改变,多种实现可以被创建,并且多态的替换不同的实现。

相比梅耶的使用方式,多态开闭原则的定义倡导对抽象基类的继承。接口规约可以通过继承来重用,但是实现不必重用。已存在的接口对于修改是封闭的,并且新的实现必须,至少,实现那个接口。

罗伯特·C·马丁英语Robert_C._Martin1996年发表的文章《开闭原则》[2]是使用这种方法的启发式著作。在2001年,Craig Larman把开闭原则关联到了Alistair Cockburn英语Alistair Cockburn的名为「受护的变量」(Protected Variations)的模式以及David Parnas关于信息隐藏的讨论。[3]

参见 编辑

  • SOLID - “SOLID”中的 O 指代了开闭原则

引用 编辑

  1. ^ Meyer, Bertrand. Object-Oriented Software Construction. Prentice Hall. 1988. ISBN 0-13-629049-3. 
  2. ^ Robert C. Martin "The Open-Closed Principle", C++ Report, January 1996 互联网档案馆的,存档日期2015-09-05.
  3. ^ "Protected Variation: The Importance of Being Closed", IEEE Software May/June 2001, pp. 89-91 [1] (页面存档备份,存于互联网档案馆

外部链接 编辑

    开闭原则, 此條目需要擴充, 2018年11月2日, 请協助改善这篇條目, 更進一步的信息可能會在討論頁或扩充请求中找到, 请在擴充條目後將此模板移除, 在面向对象编程领域中, open, closed, principle, 规定, 软件中的对象, 模块, 函数等等, 应该对于扩展是开放的, 但是对于修改是封闭的, 这意味着一个实体是允许在不改变它的源代码的前提下变更它的行为, 该特性在产品化的环境中是特别有价值的, 在这种环境中, 改变源代码需要代码审查, 单元测试以及诸如此类的用以确保产品使用品質的过程, 遵. 此條目需要擴充 2018年11月2日 请協助改善这篇條目 更進一步的信息可能會在討論頁或扩充请求中找到 请在擴充條目後將此模板移除 在面向对象编程领域中 开闭原则 The Open Closed Principle OCP 规定 软件中的对象 类 模块 函数等等 应该对于扩展是开放的 但是对于修改是封闭的 1 这意味着一个实体是允许在不改变它的源代码的前提下变更它的行为 该特性在产品化的环境中是特别有价值的 在这种环境中 改变源代码需要代码审查 单元测试以及诸如此类的用以确保产品使用品質的过程 遵循这种原则的代码在扩展时并不发生改变 因此无需上述的过程 开闭原则的命名被应用在两种方式上 这两种方式都使用了继承来解决明显的困境 但是它们的目的 技术以及结果是不同的 目录 1 梅耶开闭原则 2 多态开闭原则 3 参见 4 引用 5 外部链接梅耶开闭原则 编辑伯特蘭 邁耶一般被认为是最早提出开闭原则这一术语的人 來源請求 在他1988年发行的 面向对象软件构造 中给出 这一想法认为一旦完成一个类的实现只应该因错误而修改 新的或者改变的特性应该通过新建不同的类实现 新建的类可以通过继承的方式来重用原类的代码 衍生的子类可以或不可以拥有和原类相同的接口 梅耶的定义提倡实现继承 具体实现可以通过继承方式来重用 但是接口规格不必如此 已存在的实现对于修改是封闭的 但是新的实现不必实现原有的接口 多态开闭原则 编辑在20世纪90年代 由于抽象化接口的使用 开闭原则被广泛的重新定义 在这中间实现可以被改变 多种实现可以被创建 并且多态的替换不同的实现 相比梅耶的使用方式 多态开闭原则的定义倡导对抽象基类的继承 接口规约可以通过继承来重用 但是实现不必重用 已存在的接口对于修改是封闭的 并且新的实现必须 至少 实现那个接口 罗伯特 C 马丁 英语 Robert C Martin 1996年发表的文章 开闭原则 2 是使用这种方法的启发式著作 在2001年 Craig Larman把开闭原则关联到了Alistair Cockburn 英语 Alistair Cockburn 的名为 受护的变量 Protected Variations 的模式以及David Parnas关于信息隐藏 的讨论 3 参见 编辑SOLID SOLID 中的 O 指代了开闭原则引用 编辑 Meyer Bertrand Object Oriented Software Construction Prentice Hall 1988 ISBN 0 13 629049 3 Robert C Martin The Open Closed Principle C Report January 1996 互联网档案馆的存檔 存档日期2015 09 05 Protected Variation The Importance of Being Closed IEEE Software May June 2001 pp 89 91 1 页面存档备份 存于互联网档案馆 外部链接 编辑The Open Closed Principle Concerns about Change in Software Design 取自 https zh wikipedia org w index php title 开闭原则 amp oldid 78504558, 维基百科,wiki,书籍,书籍,图书馆,

    文章

    ,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。