知识

原文链接:https://mp.weixin.qq.com/s/iPFS3R_b0EuuJRj3Ap4SCA原作者:Java极客技术Hello 大家好,我是粉丝。在我们的工作中,我们经常遇到许多需要上级或上级审批的过程。作为一名程序员,如果你想让你实现这个过程,你会采取什么方法?经过一分钟的思考,很明显,一致的答案是责任链模式。那么什么是责任链模式呢?如何使

您当前位置>首页 >> 知识 >> 软件

OA系统_用责任链模式实现OA 审批系统中的加薪流程

发表时间:2022-04-28 17:29:00

文章来源:超级管理员

浏览次数:123

原文链接:https://mp.weixin.qq.com/s/iPFS3R_b0EuuJRj3Ap4SCA

原作者:Java极客技术

Hello 大家好,我是粉丝。在我们的工作中,我们经常遇到许多需要上级或上级审批的过程。作为一名程序员,如果你想让你实现这个过程,你会采取什么方法?

经过一分钟的思考,很明显,一致的答案是责任链模式。那么什么是责任链模式呢?如何使用责任链模式来完成这个过程?让我们来看看。

开发前的第一步是需求分析。我们的场景是这样的。阿粉准备和领导一起 A 申请一下涨薪,最满意的结果当时是直接跟上级领导 A 申请直接通过,但理想丰满,现实骨感。A 只是一个团队领导,没有直接加薪的权利,所以领导也要去他的上级 B 申请并没有在这里结束,因为 B 也要和人一起管事C 进行申请,人事 C 同时最终跟着 CEO 申请。

想想这个过程有多负责任,阿粉忍不住没有希望。毕竟阿粉只是一个小开发。为什么提高工资这么难?阿粉在厕所里哭晕了。

在这种情况下,有几个需求点,即每个人都有自己的权限,在自己的能力范围内可以直接批准,但不在自己的能力范围内只能反馈;申请内容是加薪,最终 CEO 有最终决策权。

首先,我们定义工单 model,具体代码如下

根据不同的领导和不同的申请类型,初始版本的申请加薪代码如下。

请不要服用上述代码,否则阿粉不会被开除。

显然,上面的代码用一个词来形容,那就是腐烂!这两个词真的很糟糕!!如果你在实际工作中写了这样的代码,恭喜你,你已经在被解雇的路上了。

那么如何通过责任链的设计模式优雅整个代码呢?

使多个对象有机会处理请求,以避免发起人和接收人之间的耦合,将对象连接成一条链,并沿着链传递请求,直到一个对象处理它。

同样,我们有上下级,每个领导都有上级和能力处理,所以我们可以根据以下类别设计,我们可以根据等级申请工单,当他们不能处理反馈给上级,上级不能完成将传递给上级,直到一定水平可以处理。




首先,我们设计一个抽象 Leader,代码如下

以下是四个子类。具体代码如下

抽象类中有一种属性、一种结构方法和一种抽象方法;相应的子类实现了自己的抽象方法,用于处理自己能力范围内的事情。根据自己的能力,每个实现类都认为,如果处理相应的申请条件,这种结构可以更可读,每个人的处理能力不会相互影响。如果任何人的能力发生了变化,只需修改自己的部分即可。接下来,让我们看看客户端是否被调用。

分别修改涨薪幅度值,看执行结果。

50 申请增长的运营结果如下(忽略具体值,相信如果我只涨50 的工资,简直是侮辱,这种公司应该尽快避开)。




将加薪幅度调整为 150,运行结果如下。




将涨幅调整为 550,运行结果如下:




将涨幅调整为 1550,运行结果如下:




经过我们的重构,整个代码结构已经非常的清晰了,现在的代码已经比初始版本优雅很多了,使用责任链的好处就是将请求一层层的处理,直到有能处理的对象为止,可以避免耦合。

相关案例查看更多