1、责任链模式
有多个对象,每个对象持有下一个对象的引用,这样就会形成一条链,请求在这条链上传递,直到某一对象决定处理该请求,但是发出请求者
并不清楚到底最终是哪个对象会处理请求,所以,责任链可以实现,在隐藏客户端的情况下,对系统进行动态的调整。
(有多个对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定)
实例一
public abstract class Handler {
private Handler handler;
public abstract void execute();
public Handler getHandler() {
return this.handler;
}
public void setHandler(final Handler handler) {
this.handler = handler;
}
}
public class MyHandler extends Handler {
private String name;
public MyHandler(final String name) {
this.name = name;
}
@Override
public void execute() {
System.out.println(" ~~ 当前处理器名称为: " + this.name);
if ("zhangsan".equals(this.name)) {
System.out.println(" ~~ 进行处理 ~~~~ : " + this.name);
}
else {
this.getHandler().execute();
}
}
}
public class OtherHandler extends Handler {
private String name;
public OtherHandler(final String name) {
this.name = name;
}
@Override
public void execute() {
System.out.println(" ~~ 当前处理器名称为: " + this.name);
System.out.println(" ~~~~ 进行处理 ~~~~ : " + this.name);
}
}
模拟调用
public static void main(final String[] args) {
final Handler h1 = new MyHandler("zhangsan1");
final Handler h2 = new OtherHandler("h2");
h1.setHandler(h2);
h1.execute();
}