标签:
下面是《设计模式》中给出的适用范围:
1) 有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。
2) 你想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。
3) 可处理一个请求的对象集合应被动态指定。
责任链模式又有纯与不纯的区别。
/**
* 持有下一个处理请求的对象
*/
public abstract class Handler {
protected Handler handler;
/**
* 具体处理方法
*/
protected abstract int handler(int num);
public Handler getHandler() {
return handler;
}
/**
* 设置下一个处理请求的对象
*/
public void setHandler(Handler handler){
this.handler = handler;
}
}
|
public class AuditHandler extends Handler{
@Override
protected int handler(int num) {
num++;
System.out.println("audit......"+ num);
return getHandler().handler(num);
}
}
|
public class CleanHandler extends Handler{
@Override
protected int handler(int num) {
num++;
System.out.println("clean......"+ num);
return getHandler().handler(num);
}
}
|
public class MatchHandler extends Handler{
@Override
protected int handler(int num) {
num++;
System.out.println("match......"+ num);
return num;
}
}
|
public class Client {
public static void main(String[] args) {
Handler audit = new AuditHandler();
Handler clean = new CleanHandler();
Handler match = new MatchHandler();
audit.setHandler(clean);
clean.setHandler(match);
audit.handler(0);
}
}
|
标签:
原文地址:http://www.cnblogs.com/LeslieXia/p/5494870.html