java 责任链 开源代码_责任链模式 - JAVA 技术交流 - OSCHINA - 中文开源技术交流社区...

责任链模式:即处理一个逻辑时,请求到一个对象A,对象A处理完毕传递给对象B进行处理,对象B处理完毕传递给对象C进行处理,依次下去,直到传递到最后一个对象处理完毕。

源代码如下:

责任链接口(Handler):定义操作的接口,对外提供。

责任链抽象类(AbstractHandler):定义了一个接口类型对象,主要用来设定和返回责任链的下一个对象。

责任链具体类(MyHandler):实现接口,继承抽象类。

实现的方法逻辑【1、如果有下一个对象,则传递、调用下一个对象,2、如果没有下一个对象,处理请求。】

package com.pattern;

public interface Handler {

public void operation();

}

package com.pattern;

public abstract class AbstractHandler {

private Handler handler;

public Handler getHandler() {

return handler;

}

public void setHandler(Handler handler) {

this.handler = handler;

}

}

package com.pattern;

public class MyHandler extends AbstractHandler implements Handler {

private String value;

public MyHandler(String value) {

this.value = value;

}

@Override

public void operation() {

if (null != getHandler()) {

System.out.println(this.value + " 寻找责任链上的下一个对象 "

+ ((MyHandler) super.getHandler()).value);

getHandler().operation();

} else {

System.out.println("最后执行处理:" + this.value);

}

}

}

package com.pattern;

public class Test {

public static void main(String[] args) {

MyHandler myh1 = new MyHandler(" 一 ");

MyHandler myh2 = new MyHandler(" 二 ");

MyHandler myh3 = new MyHandler(" 三 ");

MyHandler myh4 = new MyHandler(" 四 ");

MyHandler myh5 = new MyHandler(" 五 ");

myh1.setHandler(myh5);

myh5.setHandler(myh2);

myh2.setHandler(myh4);

myh4.setHandler(myh3);

myh1.operation();

}

}

测试结果:

一   寻找责任链上的下一个对象    五

五   寻找责任链上的下一个对象    二

二   寻找责任链上的下一个对象    四

四   寻找责任链上的下一个对象    三

最后执行处理: 三

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值