设计模式之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


相关推荐

  • 十七、访问者模式-访问数据结构并处理数据 #和设计模式一起旅行#「建议收藏」

    看过千山万水,依旧走不出自己的内心世界!故事背景Vistor : 访客,参观者,访问,本篇就讲讲Vistor模式,也就访问模式!有时候在软件开发中,我们会在一个数据结构中存放许多不同类型的对象信息,而且对每一个对象的处理方式并不相同,就存在数据结构对象内容的存放和数据的处理如何进行合理的设计! 如果将数据的处理和数据结构存放在一起,那么如果要新增一些对象信息的话,就需要修改…

    2022年2月27日
    35
  • Java设计模式之行为型:访问者模式

    Java设计模式之行为型:访问者模式

    2021年10月4日
    37
  • 设计模式 | 适配器模式及典型应用

    设计模式 | 适配器模式及典型应用适配器模式适配器模式(AdapterPattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。在适配器模式中,我们通过增加一个新的适配器类来解决接口不兼容的问题,使得原本没有任何关系的类可以协同工作。根据适配器类与适配者类的关系不同,适配器模式可分为对象适配器和类适…

    2022年7月25日
    12
  • 史上最全设计模式导学目录(完整版)

    史上最全设计模式导学目录(完整版)圣诞献礼!2012年-2013年,Sunny在CSDN技术博客中陆续发表了100多篇与设计模式相关的文章,涵盖了七个面向对象设计原则和24个设计模式(23个GoF设计模式+简单工厂模式),为了方便大家学习,现将所有与设计模式学习相关文章的链接进行了整理,希望能给各位带来帮助!

    2022年6月14日
    27
  • 23种设计模式总结

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

    2026年3月19日
    2
  • java prototype是什么,Java设计模式之原型模式(Prototype模式)介绍

    java prototype是什么,Java设计模式之原型模式(Prototype模式)介绍Prototype模式定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。如何使用原型模式因为Java中的提供clone()方法来实现对象的克隆,所以Prototype模式…

    2025年6月14日
    7

发表回复

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

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