码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式之 责任链模式

时间:2021-07-07 17:51:14      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:组成   image   说明   操作   des   log   解耦   alt   责任   

一、定义

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

二、分析

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

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

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

技术图片

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

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

技术图片

三、模式类图

技术图片

四、优缺点

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

五、实例

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

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

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

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

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

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

设计模式之 责任链模式

标签:组成   image   说明   操作   des   log   解耦   alt   责任   

原文地址:https://www.cnblogs.com/lixingwu/p/14979490.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!