职责链模式
- 定义:避免将请求发送者与接受者耦合在一起,让多个对象都有机会接收请求,将这些对象连接成一条线,并且沿着这条线传递请求,直到对象处理它为止。职责链模式是一种对象行为型模式。
职责链模式结构
- Handler(抽象处理者):定义了一个处理请求的接口,一般设计为抽象类,由于不同的具体处理请求的方式不同,因此在其中定义了抽象请求处理方法。因为每一个处理者的下家还是一个处理者,因此在抽象处理者终定义了一个抽象处理者类型的对象,作为其对下家的引用。通过该引用,处理者可以连成一条链。
- ConcreteHandler(具体处理者):具体处理者类中实现了抽象处理者中定义的请求方法,在处理请求之前需要进行判断,看是否有相应的处理权限,如果有则处理,否则转发给下一家。
abstract class Handler {
protected Handler successor;
public void setSuccessor(Handler successor) {
this.successor = successor;
}
public abstract void handlerRequest(String request);
}
class ConcreteHandler extends Handler {
public void handlerRequest(String request) {
if(...ok...) {
} else {
this.successor.handlerRequest(request);
}
}
}