/**
* Created by wangzhicheng on 2017/2/7.
*/
public class main {
AbstractHandler handle1=new Handle1();
AbstractHandler handle2=new Handle2();
handle1.nextHandler=handle2;
handle1.handRequest(new Request1("request1")); //从责任链的起始位置开始向下传递
handle1.handRequest(new Request2("request2"));
}
public abstract class AbstractHandler{ //请求处理抽象类
public AbstractHandler nextHandler;
public final void handRequest(AbstractRequest request){
if (gethandleLevel()==request.getRequestLevel()){
handle(request);
}else if (nextHandler!=null){
nextHandler.handle(request);
}else {
// no one could handle this request
}
}
protected abstract int gethandleLevel();
protected abstract void handle(AbstractRequest request);
}
public abstract class AbstractRequest{ //请求抽象类
private Object object;
public AbstractRequest(Object o){this.object=o;}
public Object getContent(){return object;}
public abstract int getRequestLevel();
}
public class Request1 extends AbstractRequest{
public Request1(Object o) {
super(o);
}
@Override
public int getRequestLevel() {
return 1;
}
}
public class Request2 extends AbstractRequest{
public Request2(Object o) {
super(o);
}
@Override
public int getRequestLevel() {
return 2;
}
}
class Handle1 extends AbstractHandler{
@Override
protected int gethandleLevel() {
return 1;
}
@Override
protected void handle(AbstractRequest request) {
}
}
class Handle2 extends AbstractHandler{
@Override
protected int gethandleLevel() {
return 2;
}
@Override
protected void handle(AbstractRequest request) {
}
}