开放封闭原则(ocp)

2024-05-25 19:32
文章标签 开放 原则 ocp 封闭

本文主要是介绍开放封闭原则(ocp),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一.开放封闭原则(ocp)

1.软件实体(类,函数)应该是可以扩展的,但是不可修改

- “对于扩展是开放的”行为是可以扩展的,当应用的需求改变时,可以对模块进行扩展,使其具有满足那些改变的新行为,可以改变模块的功能
- “对于更改是封闭的”对模块行为进行扩展时,不必改动模块的源代码,

2.ocp的手段:抽象化:

3.ocp实现:

a.封装变化

-什么会变化?封装
1.数据库模式
2.硬件变化
3.数据存储技术
-变化不应该分散在多个地方,而是封装在一个类中

b.预先策划,但是不需要时不实现

4.实例:
书店销售系统,计算购书总金额,根据会员的累计消费金额进行折扣,累计消费金额达到500打9.5折,1000元9折,2000元 8.5折
设计如下:

这样的设计会导致什么问题?

5.需求变更:

a.非会员一次性购书金额进行打折,300->9.5 ,500->9,按照上面的设计,必须要更改order类中的compTotal方法,增加if语句

b.项目完成后需求有变化了,对应单位会员的用户,达到2000->9折,3000->8.5,那么更改就会更多类了

6.重新设计

a.封装业务规则的变化

7.总结:

a.对扩展而开放

-对新的功能增加新代码,而不是修改已经存在的代码-在某处具体实现接口

b.对修改而封闭

-在设计中预期可能的修改

通过抽象,继承,多态增强易扩展性。

这篇关于开放封闭原则(ocp)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1002420

相关文章

JVM内存调优原则及几种JVM内存调优方法

JVM内存调优原则及几种JVM内存调优方法 1、堆大小设置。 2、回收器选择。   1、在对JVM内存调优的时候不能只看操作系统级别Java进程所占用的内存,这个数值不能准确的反应堆内存的真实占用情况,因为GC过后这个值是不会变化的,因此内存调优的时候要更多地使用JDK提供的内存查看工具,比如JConsole和Java VisualVM。   2、对JVM内存的系统级的调优主要的目的是减少

开放源许可证

https://opensource.org/licenses/category

tomcat 开放远程调试端口

1、开启远程调试端口 WIN系统,在catalina.bat里:   SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8899     Linux系统,在catalina.sh里

水处理过滤器运行特性及选择原则浅谈

过滤属于流体的净化过程中不可缺的处理环节,主要用于去除流体中的颗粒物或其他悬浮物。水处理过滤器的原理是利用有孔介质,从流体中去除污染物,使流体达到所需的洁净度水平。         水处理过滤器的滤壁是有一定厚度的,也就是说过滤器材具有深度,以“弯曲通 道”的形式对去除污染物起到了辅助作用。过滤器是除去液体中少量固体颗粒的设备,当流体进入置有一定规格滤网的滤筒后,其杂质被阻挡,而

CVPR 2024最新论文分享┆YOLO-World:一种实时开放词汇目标检测方法

论文分享简介 本推文主要介绍了CVPR 2024上的一篇论文《YOLO-World: Real-Time Open-Vocabulary Object Detection》,论文的第一作者为Tianheng Cheng和Lin Song,该论文提出了一种开放词汇目标检测的新方法,名为YOLO-World。论文通过引入视觉-语言建模和大规模预训练解决了传统YOLO检测器在固定词汇检测中的局限性。论

python 检测端口是否开放

python的socket库可以检测端口是否开放。 import socket;sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)result = sock.connect_ex(('127.0.0.1',80))if result == 0:print "Port is open"else:print "Por

重写equals和hashCode的原则规范

当符合以下条件时不需要重写equals方法:     1.     一个类的每一个实例本质上都是唯一的。     2.     不关心一个类是否提供了“逻辑相等”的测试功能     3.     超类已经改写了equals方法,并且从超类继承过来的行为对于子类也是合适的。     4.     一个类时私有的或者是package私有的,并且可以确定它的equals方法永远不会被调用。(这

Oracle OCP认证值得考吗? 需要门槛吗?

随着数据量的爆炸性增长和企业对数据依赖性的提升,对数据库专业人士的需求也在不断上升。OCP认证,作为Oracle公司提供的权威认证之一,长期以来被视为数据库专业人士技能和知识水平的重要标志。 但随着技术的发展和认证种类的增多,疑问也在不断出现:在当前的市场环境下,OCP认证还值得考吗?考取这一认证又需要满足哪些条件? 今天就来聊聊有关OCP的这些问题,让你不再困惑。   01 还值得考吗?

职场关系课:职场上的基本原则(安全原则、进步原则、收益原则、逃生舱原则)

文章目录 引言安全原则进步原则收益原则逃生舱原则 引言 职场上的王者,身体里都应该有三个灵魂: 一个文臣,谨小慎微,考虑风险; 一个武将,积极努力,谋求胜利; 一个商人,精打细算,心中有数。 安全原则 工作安全:保住自己的工作和位置信用安全:保住个人的信用,如果领导看到了你的信用受损,你和领导的关系可能会持续恶化。人身安全:有的时候你会遇到偏执的人,要及时和

《开放教育研究》

《开放教育研究》经过精心打造,已形成了“本刊专稿”“学术前沿”“理论探究”“研究报告”“技术支撑”等品牌栏目,受到国内外广大读者的青睐。 《开放教育研究》投稿须知   一、特别约定 (一) 所有投稿文章都应是未经发表的原创作品,请作者根据提示自行将投稿上传到本刊投稿平台。 文章查重率不超过10% 。 杜绝一切抄袭等学术不端行为。 特别提醒:为了避免在投稿过程中可能出现浏览器兼容问题导致的