美文网首页
设计模式-责任链模式

设计模式-责任链模式

作者: IAmWhoAmI | 来源:发表于2016-07-28 09:34 被阅读5次

其实就是
else if
else if
....


class Level{
    private int level =0;
    public Level(int level){
        this.level=level;
    }
    public boolean above(Level level){
        if (this.level >= level.level){
            return true;
        }
        return false;
    }
}

class Request{
    Level level;
    public Request(Level level){
        this.level = level;
    }
    public Level getLevel(){
        return level;
    }
}

class Response{

}

abstract class Handler{
    private Handler nextHandler;
    public final Response handleRequest(Request request){
        Response response=null;
        if(this.getHandlerLevel().above(request.getLevel())){
            response=this.response(request);
        }else{
            if(this.nextHandler!=null){
                this.nextHandler.handleRequest(request);
            }else{
                System.out.println("no proper handler");
            }
        }
        return response;
    }
    public void setNextHandler(Handler handler){
        this.nextHandler = handler;
    }
    protected abstract Level getHandlerLevel();
    public abstract Response response(Request request);
}

class ConcreteHandler1 extends Handler{
    protected Level getHandlerLevel(){
        return new Level(1);
    }
    public Response response(Request request){
        System.out.println("handler 1");
        return null;
    }
}
class ConcreteHandler2 extends Handler{
    protected Level getHandlerLevel(){
        return new Level(3);
    }
    public Response response(Request request){
        System.out.println("handler 2");
        return null;
    }
}

class ConcreteHandler3 extends Handler{
    protected Level getHandlerLevel(){
        return new Level(5);
    }
    public Response response(Request request){
        System.out.println("handler 3");
        return null;
    }
}
public class ResponsibilityTest {
    public static void main(String[] args){
        Handler handler1= new ConcreteHandler1();
        Handler handler2= new ConcreteHandler2();
        Handler handler3 = new ConcreteHandler3();
        handler1.setNextHandler(handler2);
        handler2.setNextHandler(handler3);
        Response response=handler1.handleRequest(new Request(new Level(4)));
    }
}

相关文章

网友评论

      本文标题:设计模式-责任链模式

      本文链接:https://www.haomeiwen.com/subject/fknojttx.html