深入设计模式—责任链模式(四)

深入设计模式—责任链模式(四)

一: 基本概念
  • 定义:这个设计模式感觉是比较简单的,平时在我们工作中经常遇到,简单解释就是个人责任制,最简单的就是面试了,有的公司一面人事,二面技术,三面boss,这样的情况,什么意思呢?就是说我人事只负责给你找到这个人,了解基本信息之后是符合公司的标准的,那么接下来就是技术了,至于技术怎么样我就不管了,直接交给技术经理面试了,作为技术经理只考量技术就可以了,别的可以不用太关心,如果技术通过,就要跟人事谈薪资了,人事跟老板商量之后感觉可以,然后老板说,可以带来让我再把把关。这个就是简单的责任链的概念,通常还有比如:员工请假流程,ERP系统,或者OA系统涉及到流程的。
  • 优势:1、降低耦合度。它将请求的发送者和接收者解耦。 2、简化了对象。使得对象不需要知道链的结构。 3、增强给对象指派职责的灵活性。通过改变链内的成员或者调动它们的次序,允许动态地新增或者删除责任。 4、增加新的请求处理类很方便。
  • 缺点: 1、不能保证请求一定被接收。 2、系统性能将受到一定影响,而且在进行代码调试时不太方便,可能会造成循环调用。 3、可能不容易观察运行时的特征,有碍于除错。
  • 使用场景: 1、有多个对象可以处理同一个请求,具体哪个对象处理该请求由运行时刻自动确定。 2、在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。 3、可动态指定一组对象处理请求。

代码实现

  • 这里实现一个简单的请假流程:
  1. 场景:某公司有这样一个请假的系统,员工请假需提交请假申请,审批人是组长和项目经理,如果请假天数在3天以内,小组长说了算,如果大于3天,必须要向经理申请审批。
  2. 首先我们分析这个简单的场景:先模拟一个抽象的请假流程的类,这个类包括请假的动作,和下一个执行操作的人得信息。
    在这里插入图片描述
  3. 接下来定义一个员工类的信息:
    在这里插入图片描述
  4. 接下来就是两个实现类,一个组长的实现类,一个经理的实现类:
    在这里插入图片描述
    在这里插入图片描述
  5. 上面都完成之后我们就开始测试,这里用一个简单的工厂组装一下:
    在这里插入图片描述
  6. 开始测试:
    在这里插入图片描述
  7. 结果如下:
    在这里插入图片描述
  8. 以上就是一个简单的责任链模式,后面如果还有人事审批,cto审批,老板审批,都可以扩展子类,然后在个个子类实现制自己的功能,不在能力范围内的直接丢给下一级审核。

参考Tomcat Filter 分析文章:https://www.jianshu.com/p/be47c9d89175

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值