应用场景

一个常见的应用场景,「审批流」,本文以 请假审批流 举例。

例如,请假最多需要三级审批:

  • 经理
  • 总监
  • 总经理

需要满足:每个级别可批准假期天数不同,每个级别的审批流也不同,同时请假天数影响审批流程的长短。

员工要请假,如果请假天数 < 3 天,只需要经理批准即可,如果请假天数 >= 3 天,还需要总监批准,如果请假天数 >= 7 天,还需要总经理批准。

经理要请假,如果请假天数 < 7 天,只需要总监批准即可,如果请假天数 >= 7 天,还需要总经理批准。

总监要请假,只需要总经理批准即可。

待优化的代码我就不贴了…

思考一下,如何实现它?拿起键盘,就是 if-else 梭哈,直接干?

pay3.png

不可,不可,还是需要稍微设计一下的。

简单绘制下逻辑图:

责任链模式 - 逻辑架构图.jpg

简单定义下数据图:

责任链模式 - 数据架构图.png

设计时我们要思考,如果后期新增一个审批角色,比如 HR 审批,这很常见吧,如何快速实现?如果后期有一个特殊角色,请假天数 < 3 天,需要总经理批准,如何快速实现?

相信聪明的小伙伴已经知道要使用什么模式进行实现了,没错!就是 责任链模式

下面一起来看一下,如何使用 PHPGo 语言去实现它。

详情:https://mp.weixin.qq.com/s/H12UVp2eG8VxWjNzI83qZw