责任链模式
责任链(Chain of Responsibility)模式属于行为型模式的一种。责任链模式是一种处理请求的模式,它让多个处理器都有机会处理该请求,直到其中某个处理成功为止。每个处理器都包含对下一个处理器的引用,从而形成链式结构。责任链模式把多个处理器串成链,然后让请求在链上进行传递。财务审批就是一个责任链模式。拦截器(Interceptor)、过滤器(Filter)也是一种责任链,不但允许每个Handler有机会处理请求,还允许将请求传递给下一个Handler。
责任链模式经常用在拦截、预处理请求。
责任链模式通常有以下组成部分:
[*]抽象处理者(Handler):定义了处理请求的接口,并提供设置下一个处理者的方法,一般是抽象类或接口。
[*]具体处理者(ConcreteHandler):实现了处理请求的逻辑。根据条件决定是否处理请求,或者将请求传递给下一个处理者。
[*]客户端(Client):创建并组装责任链,发出请求。
假设有一个系统需要处理不同级别的用户请求(例如普通用户、经理、总监)。每个级别的处理者只处理它能够处理的请求,无法处理的请求将传递给更高级别的处理者。
1、抽象处理者
// 抽象处理者
abstract class Handler {
protected Handler nextHandler; // 下一个处理者
public void setNextHandler(Handler nextHandler) {
this.nextHandler = nextHandler;
}
// 抽象方法,处理请求
public abstract void handleRequest(int level);
}2、具体处理者
// 具体处理者:普通用户处理者class UserHandler extends Handler { @Override public void handleRequest(int level) { if (level
页:
[1]