码迷,mamicode.com
首页 > 其他好文 > 详细

责任链模式

时间:2016-08-27 06:19:59      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:

应用情景


  责任链模式主要应用在对请求的处理上。当一个请求来临的时候,A、B、C都有可能去处理,由于A、B、C三者的能力不同,他们会更根据请求中携带的数据进行条件判断,如果满足自己的条件,才可以被自己处理,否则  需要由其他人处理。在这种情况下,我们可以使用if...else来处理请求,先进行条件判断,然后交给某人去处理。当然,更好的实现方式是使用责任链模式。将请求直接交给A,A自己进行条件判断,A如果发现自己处理不了,则将请求交给B,B再进行判断,以此类推。

类图关系


 

技术分享

Handler:抽象类,定义处理方法handleMessage;定义编排方法setNext来设置下一个处理者;定义每个具体的处理者处理级别以及具体处理任务

concreteHandler:继承抽象类,实现自己的处理任务

示例代码


在责任链中前一个对象可以消费(增删改)一部分请求信息后交给下一个对象也是可以的。

public abstract class Handler{
    private Handler nextHandler;
    
    public final Response handleMessage(Request request){
        Response response = null;
        //判断是否是自己的处理级别
        if(this.getHandleLevel().equals(request.getRequestLevel())){
            response = this.echo(request);
        }else{
            if(this.nextHandler != null)
                response = nextHandler.handleMessage(request);
            else{
                //没有适当的处理者,业务自行处理
            }
        }
        return response;
    }
    
    protected void setNext(Handler _handler){
        this.nextHandler = _handler;
    }
    
    protected abstractLevell getHandleLevel();
    
    protected abstract Response echo(Request request);
}

 

责任链模式

标签:

原文地址:http://www.cnblogs.com/xidongyu/p/5812075.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!