1.开闭原则

开闭原则,看一下由

《spring5 核心原理与30个类手写实战》

一书给出的定义: 在这里插入图片描述核心的几句话就是:

对修改关闭, 对扩展开放

如何做到对修改关闭, 对扩展开放呢?首先解释一下这段话

  1. 解释: 用白话就是,当产品经理又改需求了,或者添加了新功能,如果变化特别大,那我们最好做到尽可能少甚至不修改原来的逻辑代码,通过扩展功能代码替换原逻辑。

  2. 如何做到:那么怎么通过扩展替换原来的逻辑呢?就是用到面向接口编程

给大家讲一个业务
张三同学开学了,学校规定:同学们的书都是学校老师采购的,老师开学前会去附近书店买1000本书回来给同学们用,只有出示教师证才给报销,还得开1000本书的发票,老师还得核对书的数量对不对,张三的老师累的想砍人。
后来学校听说,学生去网上购物,凭借学生卡半价,而且学校也给报销,既可以节约学校的开销又可以节省老师的时间,以后的流程就由老师买书变成学生买书。

当没用开闭原则进行编程是这样的:
修改前:
在这里插入图片描述
修改后:
在这里插入图片描述
可以看到,老师买书逻辑,在改成由学生买书的业务逻辑,如果这要是真的业务代码,而不是现在的假代码,最起码也得在好几千行的业务代码里进行修改。应该有人进行过在好几千行的代码里进行业务逻辑修改,那感觉相当酸爽emmmm

那现在咱们改成用开闭原则进行修改(面向接口):

业务修改前,由老师购书:
在这里插入图片描述

User接口(买书接口,返回需要报销的发票信息)
在这里插入图片描述

Teacher实现User接口
在这里插入图片描述
修改成由学生买书后:只需要替换一下学生对象,并新增一个学生接口就行了:

  1. 新增学生类
    在这里插入图片描述
  2. 将老师对象替换成学生对象
    在这里插入图片描述

虽然说创建User对象的时候改动了代码,但是核心业务只改动了这一段,学校和报销业务代码都没有改变,对于买书的逻辑,只是新增了一个学生类,对老师对象进行替换,重新写买书逻辑

有的人要说了,这个也要新写一个学生买书的方法,那多麻烦,还得多一个User接口,还得去实现,设计接口也挺麻烦的,我业务很熟的,直接在原业务代码里写业务改业务他不香么?

确实如果是业务代码很少很少也不复杂,就不要进行开闭原则了,因为这样直接改代码可能会更方便

但是如果好几千行的代码,如果直接写代码不做任何设计,祈祷同事不会砍死你吧。

这就是开闭原则的大概思想哈,思想这个东西不止设计业务层,实现方式也不局限于面向接口编程,在写任何代码的时候要多想,弟弟就写到这了,大佬勿喷,就算想喷也挺着吧,毕竟每个人有每个人的想法,每个人可能都是对的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值