文章目录:
- 应用场景
- PHP 实现
- Go 实现
- 小结
- 推荐阅读
应用场景
一个常见的应用场景,「审批流」,本文以 请假审批流 举例。
例如,请假最多需要三级审批:
- 经理
- 总监
- 总经理
需要满足:每个级别可批准假期天数不同,每个级别的审批流也不同,同时请假天数影响审批流程的长短。
员工要请假,如果请假天数 < 3 天,只需要经理批准即可,如果请假天数 >= 3 天,还需要总监批准,如果请假天数 >= 7 天,还需要总经理批准。
经理要请假,如果请假天数 < 7 天,只需要总监批准即可,如果请假天数 >= 7 天,还需要总经理批准。
总监要请假,只需要总经理批准即可。
待优化的代码我就不贴了...
思考一下,如何去实现它?拿起键盘,就是 if-else
梭哈,直接干?
不可,不可,还是需要稍微设计一下的。
简单绘制下逻辑图:
简单定义下数据图:
设计时我们还要思考,如果后期新增一个审批角色,比如 HR 审批
,这很常见吧,如何快速实现?如果后期有一个特殊角色,请假天数 < 3 天,需要总经理批准,如何快速实现?
相信聪明的小伙伴已经知道要使用什么模式进行实现了,没错!就是 责任链模式 。
下面一起来看一下,如何使用 PHP
和 Go
语言去实现它。