设计模式之6大原则(6)开闭原则

设计模式之6大原则(6)开闭原则

开闭原则(OCP)

面向对象设计
中“可复用设计”的基石,是面向对象设计中最重要的原则之中的一个,其他非常多的设计原则都是实现开闭原则的一种手段。
开闭原则中“开”,是指对于组件
功能的扩展是开放的,是同意对其进行功能扩展的;开闭原则中“闭”,是指对于原有代码的改动是封闭的,即不应该改动原有的代码。
遵循开闭原则设计出的模块具有两个主要特征:
(1)
对于扩展是开放的(Open for extension)。这意味着模块的行为是能够扩展的。当应用的需求改变时,我们能够对模块进行扩展,使其具有满足那些改变的新行为。也就是说,我们能够改变模块的功能。
(2)
对于修改是关闭的(Closed for modification)。对模块行为进行扩展时,不必修改模块的源码或者二进制代码。模块的二进制可运行版本号,不管是可链接的库、DLL或者.EXE文件,都无需修改。
实现开闭原则的关键就在于“抽象”。把系统的全部可能的行为抽象成一个抽象底层,这个抽象底层规定出全部的详细实现必须提供的方法的特征。作为
系统设计的抽象层,要预见全部可能的扩展,从而使得在不论什么扩展情况下,系统的抽象底层不需改动;同一时候,因为能够从抽象底层导出一个或多个新的详细实现,能够改变系统的行为,因此系统设计对扩展是开放的。
我们在
软件开发的过程中,一直都是提倡需求导向的。这就要求我们在设计的时候,要很清楚地了解用户需求,推断需求中包括的可能的变化,从而明白在什么情况下使用开闭原则。
勃兰特·梅耶一般被觉得一旦完毕,一个类的实现仅仅应该因错误而改动,新的或者改变的特性应该通过新建不同的类实现。新建的类能够通过继承的方式来重用原类的代码。衍生的子类能够或不能够拥有和原类同样的接口。梅耶的定义提倡实现
继承。详细实现能够通过继承方式来重用,可是接口规格不必如此。已存在的实现对于改动是封闭的,可是新的实现不必实现原有的接口。
在20世纪90年代,开闭原则被广泛的又一次定义因为抽象化接口的使用,在这中间实现能够被改变,多种实现能够被创建,而且多态化的替换不同的实现。相比梅耶的使用方式,多态开闭原则的定义倡导对抽象基类的继承。接口规约能够通过继承来重用,可是实现不必重用。已存在的接口对于改动是封闭的,而且新的实现必须实现那个接口。
假设一个
软件系统符合开闭原则的,那么从
软件project的角度来看,它至少具有这种优点:
可复用性好。
我们能够在软件完毕以后,仍然能够对软件进行扩展,添�新的
功能,很灵活。因此,这个
软件系统就能够通过不断地添加�新的组件,来满足不断变化的需求。
可维护性好。
因为对于已有的
软件系统的组件,特别是它的抽象底层不去改动,因此,我们不用操心软件系统中原有组件的稳定性,这就使变化中的软件系统有一定的稳定性和延续性。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119140.html原文链接:https://javaforall.net

(0)
上一篇 2021年11月15日 下午4:00
下一篇 2021年11月15日 下午5:00


相关推荐

  • 设计模式(十一)代理模式Proxy(结构型)

    设计模式(十一)代理模式Proxy(结构型)设计模式 十一 代理模式 Proxy 结构型 1 概述因为某个对象消耗太多资源 而且你的代码并不是每个逻辑路径都需要此对象 你曾有过延迟创建对象的想法吗 if 和 else 就是不同的两条逻辑路径 你有想过限制访问某个对象 也就是说 提供一组方法给普通用户 特别方法给管理员用户 以上两种需求都非常类似 并且都需要解决一个更大的问题 你如何提供一致的接口给某个对

    2026年3月18日
    2
  • 23种设计模式总结

    23种设计模式总结一 什么是设计模式设计模式 Designpatter 是一套被反复使用 多数人知晓的 经过分类编目的 代码设计经验的总结 使用设计模式是为了可重用代码 让代码更容易被他人理解 保证代码可靠性 毫无疑问 设计模式于己于他人于系统都是多赢的 设计模式使代码编制真正工程化 设计模式是软件工程的基石 如同大厦的一块块砖石一样 项目中合理的运用设计模式可以完美的解决很多问题 每种模式在现在中都有相应的原理来与之对应 每一个模式描述了一个在我们周围不断重复发生的问题 以及该问题的核心解决方案 这也是它能被广泛

    2026年3月19日
    2
  • Java设计模式之状态模式

    本文属于”23种设计模式”系列,介绍状态模式。

    2022年3月11日
    49
  • Carson带你学设计模式:工厂方法模式(Factory Method)

    Carson带你学设计模式:工厂方法模式(Factory Method)手把手带你全面了解工厂方法模式

    2026年3月17日
    2
  • 设计模式六大原则(2):里氏替换原则

    设计模式六大原则(2):里氏替换原则肯定有不少人跟我刚看到这项原则的时候一样 对这个原则的名字充满疑惑 其实原因就是这项原则最早是在 1988 年 由麻省理工学院的一位姓里的女士 BarbaraLisko 提出来的 定义 1 如果对每一个类型为 T1 的对象 o1 都有类型为 T2 的对象 o2 使得以 T1 定义的所有程序 P 在所有的对象 o1 都代换成 o2 时 程序 P 的行为没有发生变化 那么类型 T2 是类型 T1 的子类型

    2026年3月20日
    2
  • Java设计模式之结构型:组合模式

    Java设计模式之结构型:组合模式

    2021年10月4日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号