这篇文章主要为大家展示了“java设计模式中责任链模式的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“java设计模式中责任链模式的示例分析”这篇文章吧。
责任链模式里面的很多对象对其下家的引用而形成一条连锁,请求在这个链条上传递,直到被处理完毕,而客户端并不知道链条上哪个链接点处理了这个事件。开发 Web 项目的时候,过滤器就是这样工作的,过滤器互相嵌套,一个接着一个处理请求。这个好处就是在客户端不在意的情况下动态处理连接点以及分配任务。
按照惯例,先上 UML 类图
Handler :抽象处理角色,定义一个处理请求的接口,可以设定返回下家的引用;
ConcreteHandler:具体处理角色,接收到请求的具体处理者,可以选择处理也可以不处理,把请求传递下一个连接点。
看下具体的代码:
先把抽象处理者写出来,他是一个抽象类或者接口,这里使用抽象类,每个处理者给一个名字 name 属性
public abstract class Handler { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public Handler(String name) { this.name=name; } protected Handler handler; public Handler getHandler() { return handler; } public void setHandler(Handler handler) { this.handler = handler; } public abstract void handle(); }
再把具体的处理者实现出来
public class ConcreteHandler extends Handler{ public ConcreteHandler(String name) { super(name); } @Override public void handle() { System.out.println("当前处理:"+getName()); if(getHandler()!=null){ getHandler().handle(); } } }
在该具体方法的 handle 里面,处理自个当前需要做的事件,然后寻找后续处理者,把到最后完成。
看下客户端如何处理
public class Client { public static void main(String[] args) { Handler h2=new ConcreteHandler("handler1"); Handler h3=new ConcreteHandler("handler2"); h2.setHandler(h3); h2.handle(); } }
在责任链模式当中,对处理者而言,一旦一个请求只有一个处理者处理了,称之为纯的责任链模式,然并卵,现实没有这么纯的责任链;那么不纯的就是一个请求被0个或多个处理者处理了,这个情况很常见。责任链使得客户端请求与接收端处理减低耦合度,使得多个处理者都可以处理这个请求。这个链可以是一棵树,也可以是链表,也可以是个环。但是每个处理者只可以传递任务给下一个处理者,或者自己处理掉,不可能同时传递多个。
以上是“java设计模式中责任链模式的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。