Chain 责任链模式

Chain 责任链模式

目录

[TOC]

1. 概述

1.1. 设计模式定义

职责链模式(Chain of Responsibility):使多个对象都有机会处理同一个请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。

1.2. 自我理解

责任链又叫做功能链,个人觉得有两种场景非常适合用:
1、流水线:层层配合,达到最后效果;每个人都要完成自己的工作,最后才能生产出产品;
链中的每个对象都要按照顺序处理,直到最后一个对象处理完毕。
2、责任划分:请假事宜,2天以内找组长,2~5天找经理,5~10天找总监,10~20天找副总….
链中的每个对象扮演处理器,并且有一个后继对象。如果它可以处理请求,就进行处理;否则把请求转发给后继者。

1.3. 责任链模式的组成

抽象链 (AbstractChain):抽象类,抽象链路的下级引用,抽象执行方法。
具体链 (ConcreteChain):抽项链的子类,具体链路的下级引用,具体执行方法,执行下个方法。

2. UML

3. Example

3.1. 场景

用户检验,一个用户登录需要通过层层检查,用户名、密码、权限等。该例子属于流水线式的责任链,所有具体链路全部执行完毕才能返回一个校验完成的用户。

这只是责任链中很简单的一个应用,有些银行的校验链路可以达到100多层。这么多层的校验,如果全部用 if else 去实现,后面的维护人员简直崩溃了。

3.2. 代码实现

原创文章,转载请注明: 转载自LoserZhao – 诗和远方[ http://www.loserzhao.com/ ]

本文链接地址: http://www.loserzhao.com/java/designpattern/chain-designpattern.html

文章的脚注信息由WordPress的wp-posturl插件自动生成

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

使用新浪微博登陆