开闭原则——举例说明Java设计模式中的开闭原则
开闭原则——举例说明Java设计模式中的开闭原则
1.前⾔
1.1 官⽅定义
开闭原则(Open Clo Principle),俗称OCP原则,是Java世界⾥最基础的设计原则, 它指导我们如何建⽴⼀个稳定的、 灵活的系统。
怎么定义开闭原则呢?
定义:⼀个软件实体如类、 模块和函数应该对扩展开放、对修改关闭,⽤抽象构建框架,⽤实现扩展细节!
怎么理解定义?
意思就是说,当软件需要变化时,⼀个软件实体应该尽量通过扩展来实现变化, ⽽不是通过修改已有的代码来实现变化。宋词的特点
软实体是?
项⽬或软件产品中按照⼀定的逻辑规则划分的模块、类、函数(⽅法)。
小朋友爱吃的菜1.2 本⽂案例的业务场景
⼀个家庭农场不定期地收养各种宠物,现在稳定的代码是,收养了狗狗和⼩猫,说的好像有点朦胧哈
可以看看依赖倒置的案例,是⽤依赖倒置原则优化后的需求场景
.百搭牌
没太明⽩的话,往下看例⼦说明
2.举例说明
2.1 正例(正在使⽤的业务场景)
如果看了上⾯的依赖倒置原则,这个例⼦可以跳过了,就是⽤抽象类优化后的正例。
(1)类图
一车十子寒
(2)代码说明
(3)测试
灰公主
(4)简单分析
可以看到⽬前代码如果新增饲养⼩⽺或者⼩猪的话,直接新增⼀个猪成长过程的实体类即可,不⽤修改 FamilyFarm 类,这是我们上篇说的抽象不应该依赖细节,细节应该依赖抽象的依赖倒置原则,不明⽩的⼩伙伴可以先看上篇案例的讲解!
2.2 反例(在2.1上新增需求后的反例代码)
2.2.1 新增需求内容
但是我们现在需求升级了,不再新增饲养⼩⽺或者 了,请看下⾯需求:
大烩菜的做法我们想对根据宠物的年龄进⾏判断要不要饲养,以下是两种情况的需求汽车磨合
需求1:宠物年龄不超过2岁的可以饲养员会领养
需求2:狗狗的年龄不超过1岁,⼩猫的年龄不超过2岁
2.2.2 针对两个需求的反例代码
(1)针对需求1的
类图:—>到这种程度了,其实看不看都可以,代码也是⼀⽬了然的,我还是放上吧
代码如下:
测试:
电话销售好做吗