一.开放封闭原则(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.对修改而封闭

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

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

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐