您好,欢迎来到尚车旅游网。
搜索
您的当前位置:首页责任链模式(Chain of Responsibility)

责任链模式(Chain of Responsibility)

来源:尚车旅游网
http://www.mykgc.cn/

责任链模式(Chain of Responsibility)

责任链模式,有多个对象,每个对象持有对下一个对象的引用,这样就会形成一条链,请求在这条链上传递,直到某一对象决定处理该请求。但是发出者并不清楚到底最终那个对象会处理该请求,所以,责任链模式可以实现,在隐瞒客户端的情况下,对系统进行动态的调整。先看看关系图:

Abstracthandler类提供了get和set方法,方便MyHandle类设置和修改引用对象,MyHandle类是核心,实例化后生成一系列相互持有的对象,构成一条链。

[java] view plaincopy

1. public interface Handler {

2. public void operator();

http://www.mykgc.cn/

3. }

[java] view plaincopy 1. public abstract class AbstractHandler {

2.

3. private Handler handler;

4. public Handler getHandler() {

5. return handler;

6. }

7. public void setHandler(Handler handler) {

8. this.handler = handler;

9. }

10.

11. }

http://www.mykgc.cn/ [java] view plaincopy 1. public class MyHandler extends AbstractHandler implements Handler {

2. private String name;

3. public MyHandler(String name) {

4. this.name = name;

5. }

6. @Override

7. public void operator() {

8. System.out.println(name+\"deal!\");

9. if(getHandler()!=null){

10. getHandler().operator();

11. }

12. }

http://www.mykgc.cn/

13. }

[java] view plaincopy 1. public class Test {

2. public static void main(String[] args) {

3. MyHandler h1 = new MyHandler(\"h1\");

4. MyHandler h2 = new MyHandler(\"h2\");

5. MyHandler h3 = new MyHandler(\"h3\");

6. h1.setHandler(h2);

7. h2.setHandler(h3);

8. h1.operator();

9. }

10. }

输出:

http://www.mykgc.cn/

h1deal!

h2deal!

h3deal!

此处强调一点就是,链接上的请求可以是一条链,可以是一个树,还可以是一个环,模式本身不约束这个,需要我们自己去实现,同时,在一个时刻,命令只允许由一个对象传给另一个对象,而不允许传给多个对象。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- sceh.cn 版权所有 湘ICP备2023017654号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务