本文主要是介绍开放封闭原则(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)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!