1.用意
在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链.请求在这个链上传递,直到链上的某一个对象决定处理地请求.发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织链和分配责任。
2.类图
3.代码
/*
* 抽象处理者
*/
public abstract class Handler {
protected Handler successor;
public Handler getSuccessor() {
return successor;
}
public void setSuccessor(Handler successor) {
this.successor = successor;
}
public abstract void handleRequest();
}
/*
* 具体处理者源代码
*/
public class ConcreteHandler extends Handler{
@Override
public void handleRequest() {
if(this.getSuccessor()!=null) {
S.s("The request is passed to " + this.getSuccessor());
this.getSuccessor().handleRequest();
} else {
S.s("The request is handled here.");
}
}
}
/*
* 测试类
*/
public class Test {
static private Handler handler1, handler2;
public static void main(String[] args) {
handler1 = new ConcreteHandler();
handler2 = new ConcreteHandler();
handler1.setSuccessor(handler2);
handler1.handleRequest();
}
}
z