`

开-闭原则

 
阅读更多

一、什么是开-闭原则?

一个软件实体应当对扩展开放,对修改关闭。

  也就是说,在设计一个模块时,应当使这个模块可在不被修改的前提下被扩展。换言之,就是在不必修改原有代码的情况下给模块添加新行为。

开-闭原则是面向对象设计最核心的原则。

 


二、怎样做到开-闭原则?

  关键是抽象化。可给系统定义出一个不再更改的抽象设计,然后在此抽象设计的基础上可提供任意数量的实现。

  抽象层不需要修改,从而满足了“对修改关闭”;可添加新的具体实现来添加新行为,因此满足了“对扩展开放”。

  开闭原则从另一个角度讲述,就是“ 对可变性的封装原则 ”。考虑到系统将来在某些地方可能会发生改变,在设计时考虑将其封装。该原则意味着两点:

(1)一种可变性不应当散落在代码的很多角落,而应当被封闭到一个对象里。同一种可变性的不同表象意味着同一个继承等级结构中的具体子类。

(2)一种可变性不应当与另一种可变性混合在一起。

  通常很难百分百保证开-闭原则,所以要重点考虑会有什么变化,仅针对可变的地方应用开-闭原则。

 

 

三、与其他原则的关系

(1)里氏代换原则

  是对开-闭原则的补充。开闭原则的关键是抽象。而基类和子类的继承关系就是抽象化的具体实现,所以里氏代换原则是抽象化的具体步骤的规范。

(2)合成/聚合复用原则

  合成/聚合复用原则也是对开-闭原则的补充。合成/聚合复用原则要求优先使用合成/聚合,而不是继承。

(3)依赖倒转原则

  依赖倒转原则是手段,开-闭原则是目标,可通过依赖倒置原则这一手段实现开闭原则这一目标。

(4)迪米特法则

  迪米特法则使得各个模块相对更加独立,进行扩展时,更容易地做到对修改关闭。是实现开-闭原则的一条道路。

(5)接口隔离原则

  接口隔离原则限制通信,使得系统更容易地做到对修改关闭。

分享到:
评论

相关推荐

    JAVA设计模式之设计原则 ---开闭原则源码

    JAVA设计模式之设计原则 ---开闭原则源码

    开闭原则----图片缓存

    开闭原则----图片缓存

    uml与设计模式

    用uml软件介绍设计模式

    七大原则&&六大关系

    开-闭原则(Open-Closed Principle, OCP):一个软件实体应当对扩展开发,对修改关闭.说的是,再设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展.换言之,应当可以在不必修改源代码的情况下改变这个模块的...

    什么是开闭原则,java开闭原则

    开闭原则指的是一个软件实体应对对扩展开发,对修改关闭(Software entities should be open for extension, but closed for modification)。这个原则是说在设计一个模块的时候,应对使这个模块可以在不被修改的前提...

    JAVA开闭原则

    开闭原则是一种设计思想,并不局限于java语言

    SQL语句优化2

    开-闭原则(OCP):一个软件实体应当对扩展开放,对修改关闭。 里氏代换原则(LSP):一个软件实体如果使用的是一个基类的话,那么一定适用于其子类。 依赖倒转原则(DIP):要依赖于抽象,不要依赖于具体。 接口隔离...

    设计模式6大原则:开闭原则

    设计模式6大原则:开闭原则

    java与模式

    4:开-闭 原则;5:java语言接口;6:抽象类;7:里氏代换原则;8:依懒倒转原则;9:接口隔离原则;10:合成/聚合复用原则;11:迪米特法原则;12:简单工厂模式;13:工厂方法模式;14:抽象工厂模式;15:单例模式;16:单例模式与MX记录...

    OOD设计基本原则整理.doc

    OOD设计基本原则 一. 开-闭原则 :我们改变不了历史,但我们可以改变未来。

    面型对象设计原则——开闭原则(OCP)的Demo+静态结构图

    C# 版本,OCP原则的Demo,内部培训资料。

    面向对象程序设计六大原则

    一、“开-闭”原则(Open-Closed Principle,OCP) 1.1“开-闭”原则的定义及优点 1)定义:一个软件实体应当对扩展开放,对修改关闭( Software entities should be open for extension,but closed for modification....

    python开闭原则.docx

    python开闭原则 开闭原则是面向对象设计中的一个重要原则,它指出一个软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。这意味着当需要添加新功能时,应该通过扩展现有代码来实现,而不是修改已有代码。...

    Java面向对象程序设计杨晓燕面向对象基本原则和模式.pptx

    开放-封闭原则 所谓"开放-封闭原则"(Open-Closed Principle),也称"开-闭原则",就是让设计对扩展开放,对修改关闭。也就是说,不允许更改的是系统的抽象层,而允许更改的是系统的实现层。高层模块不应该依赖低层...

    积分管理系统java源码-DesignPattern:关于设计模式的一些演示(Java)

    想要达到这样的效果,我们需要使用接口和抽象类,开-闭原则是最抽象也是最重要的OOD原则。简单工厂模式、工厂方法模式、抽象工厂模式中都提到了如何通过良好的设计遵循开-闭原则。 里氏替换原则 Liskov Substitution...

    开闭原则1

    开闭原则1

    设计模式,软件开发者必读

    1.5.1 开-闭原则(OPEN-CLOSED PRINCIPLE, OCP): 7 1.5.2 里氏代换原则(LISKOV SUBSTITUTION PRINCIPLE,常缩写为.LSP) 8 1.5.3 依赖倒置原则(DEPENDENCE INVERSION PRINCIPLE) 8 1.5.4 接口隔离原则(INTERFACE ...

    开闭原则.rar之java设计模式

    开闭原则.rar开闭原则.rar开闭原则.rar之java设计模式

    大一课程设计---几何图形

    TestGeometricObject2 ,体会开-闭原则。 版本3:满分 20 分 在第2 步的基础上设计实现一个具有 GUI 界面的几何图形绘制系统系统,要求实现根 据选择的几何图形类型来绘制和删除相应的图形,其中相关参数应通过...

    开闭原则OCP.zip

    开闭原则OCP.zip

Global site tag (gtag.js) - Google Analytics