一、什么是开-闭原则?
一个软件实体应当对扩展开放,对修改关闭。
也就是说,在设计一个模块时,应当使这个模块可在不被修改的前提下被扩展。换言之,就是在不必修改原有代码的情况下给模块添加新行为。
开-闭原则是面向对象设计最核心的原则。
二、怎样做到开-闭原则?
关键是抽象化。可给系统定义出一个不再更改的抽象设计,然后在此抽象设计的基础上可提供任意数量的实现。
抽象层不需要修改,从而满足了“对修改关闭”;可添加新的具体实现来添加新行为,因此满足了“对扩展开放”。
开闭原则从另一个角度讲述,就是“
对可变性的封装原则
”。考虑到系统将来在某些地方可能会发生改变,在设计时考虑将其封装。该原则意味着两点:
(1)一种可变性不应当散落在代码的很多角落,而应当被封闭到一个对象里。同一种可变性的不同表象意味着同一个继承等级结构中的具体子类。
(2)一种可变性不应当与另一种可变性混合在一起。
通常很难百分百保证开-闭原则,所以要重点考虑会有什么变化,仅针对可变的地方应用开-闭原则。
三、与其他原则的关系
(1)里氏代换原则
是对开-闭原则的补充。开闭原则的关键是抽象。而基类和子类的继承关系就是抽象化的具体实现,所以里氏代换原则是抽象化的具体步骤的规范。
(2)合成/聚合复用原则
合成/聚合复用原则也是对开-闭原则的补充。合成/聚合复用原则要求优先使用合成/聚合,而不是继承。
(3)依赖倒转原则
依赖倒转原则是手段,开-闭原则是目标,可通过依赖倒置原则这一手段实现开闭原则这一目标。
(4)迪米特法则
迪米特法则使得各个模块相对更加独立,进行扩展时,更容易地做到对修改关闭。是实现开-闭原则的一条道路。
(5)接口隔离原则
接口隔离原则限制通信,使得系统更容易地做到对修改关闭。
分享到:
相关推荐
JAVA设计模式之设计原则 ---开闭原则源码
开闭原则----图片缓存
用uml软件介绍设计模式
开-闭原则(Open-Closed Principle, OCP):一个软件实体应当对扩展开发,对修改关闭.说的是,再设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展.换言之,应当可以在不必修改源代码的情况下改变这个模块的...
开闭原则指的是一个软件实体应对对扩展开发,对修改关闭(Software entities should be open for extension, but closed for modification)。这个原则是说在设计一个模块的时候,应对使这个模块可以在不被修改的前提...
开闭原则是一种设计思想,并不局限于java语言
开-闭原则(OCP):一个软件实体应当对扩展开放,对修改关闭。 里氏代换原则(LSP):一个软件实体如果使用的是一个基类的话,那么一定适用于其子类。 依赖倒转原则(DIP):要依赖于抽象,不要依赖于具体。 接口隔离...
设计模式6大原则:开闭原则
4:开-闭 原则;5:java语言接口;6:抽象类;7:里氏代换原则;8:依懒倒转原则;9:接口隔离原则;10:合成/聚合复用原则;11:迪米特法原则;12:简单工厂模式;13:工厂方法模式;14:抽象工厂模式;15:单例模式;16:单例模式与MX记录...
OOD设计基本原则 一. 开-闭原则 :我们改变不了历史,但我们可以改变未来。
C# 版本,OCP原则的Demo,内部培训资料。
一、“开-闭”原则(Open-Closed Principle,OCP) 1.1“开-闭”原则的定义及优点 1)定义:一个软件实体应当对扩展开放,对修改关闭( Software entities should be open for extension,but closed for modification....
python开闭原则 开闭原则是面向对象设计中的一个重要原则,它指出一个软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。这意味着当需要添加新功能时,应该通过扩展现有代码来实现,而不是修改已有代码。...
开放-封闭原则 所谓"开放-封闭原则"(Open-Closed Principle),也称"开-闭原则",就是让设计对扩展开放,对修改关闭。也就是说,不允许更改的是系统的抽象层,而允许更改的是系统的实现层。高层模块不应该依赖低层...
想要达到这样的效果,我们需要使用接口和抽象类,开-闭原则是最抽象也是最重要的OOD原则。简单工厂模式、工厂方法模式、抽象工厂模式中都提到了如何通过良好的设计遵循开-闭原则。 里氏替换原则 Liskov Substitution...
开闭原则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开闭原则.rar开闭原则.rar之java设计模式
TestGeometricObject2 ,体会开-闭原则。 版本3:满分 20 分 在第2 步的基础上设计实现一个具有 GUI 界面的几何图形绘制系统系统,要求实现根 据选择的几何图形类型来绘制和删除相应的图形,其中相关参数应通过...
开闭原则OCP.zip