责任链模式

责任链模式:即处理一个逻辑时,请求到一个对象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();
	}

}

 

测试结果:
 一   寻找责任链上的下一个对象    五
 五   寻找责任链上的下一个对象    二
 二   寻找责任链上的下一个对象    四
 四   寻找责任链上的下一个对象    三
最后执行处理: 三

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值