其他分享
首页 > 其他分享> > 设计模式之 责任链模式

设计模式之 责任链模式

作者:互联网

一、定义

当你想让一个以上的对象有机会能够处理某个请求的时候,就使用责任链模式。

二、分析

我们在实际开发过程中,往往会遇到在执行某些操作时需要进行很多条件的验证。

比如说在用户在订购一个商品时,我们就需要进行用户认证、库存校验、账户校验等等操作,只有经过这些处理后才能正常执行操作。

如果我们在订购的代码里加上这些校验,就会变成下面的这样:

代码变得越来越多, 也越来越混乱。

如果我们后续,需要添加更多的校验或者取消某些校验,这样会导致代码变得越来越多, 也越来越混乱。

当出现此类的逻辑,设计模式建议我们使用责任链模式。把处理逻辑连成一个链,链上的每个节点都可以跳转到下一个节点上。当需要处理的对象经过每个节点时,节点只需处理自己的逻辑,处理完成后调用下一个节点,直到走完所有的节点。

处理者依次排列, 组成一条链。

三、模式类图

责任链模式

四、优缺点

  1. 将请求者和接收者解耦;
  2. 简化类结构,类不需要知道全部细节;
  3. 可以更改处理的顺序,动态的添加和删除校验逻辑;
  4. 并不能保证请求被处理;
  5. 请求链过长会导致性能降低;
  6. 不易于观察运行时特征,有碍于除错,我能可能找不到是哪一个类处理了它。

五、实例

在员工请假流程中,公司规定:

请假天数3天内,部门经理审批即可,

请假天数大于3天的需要再通过老板审批后才能请假。

根据实例说明,我们可以定义部门经理的处理类和老板处理类,当请假天数3天内,部门经理就进行审核;

审核完成后流向老板处理类,老板处理类判断,发现天数在3天以内就继续往下放行,大于3天就进行审核。

源码:gitee地址(点击跳转)

标签:请假,处理,天数,校验,模式,责任,设计模式,节点,部门经理
来源: https://www.cnblogs.com/lixingwu/p/14979490.html