目录
一.定义
使多个对象都有机会处理请求,解耦请求发送者和请求接收者,将请求接收者连成一条链,并沿着这条链传递请求,直到有对象处理该请求为止。
从定义的描述看责任链模式有两个核心概念,一是降低请求发送者和处理者耦合性,请求者不需要关心处理者的实现细节;二是多个处理者构成一条处理链,由链去处理相似的请求,并在链中决定由谁来处理这个请求。
二.类图
Request:请求对象。
Handler:父类处理器。
ConcreteHandler:子处理器。
三.实战案例
本文以用户注册为例子,使用责任链模式编写注册流程。我们假设系统支持普通用户、VIP两种注册方式。
普通用户需要提供用户名、手机号。
VIP用户需提供用户名、邮箱、序列号。
3.1用户注册类图
仿照责任链模式类图,用户注册流程相关类图如下:
RegisterRequest:用户注册请求对象
Handler:处理注册请求基类
CommonHandler:普通用户注册处理器
VIPHandler:VIP用户注册处理器
3.2代码
package cn.lzz.responsibility;
public class RegisterRequest {
//用户名
private String userName;
//手机号
private String phoneNum;
//序列号
pri