首页 > 代码库 > 责任链模式
责任链模式
应用情景
责任链模式主要应用在对请求的处理上。当一个请求来临的时候,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);}
责任链模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。