什么是责任链模式呢?所谓的责任链模式就是使多个对象都有机会处理同一个请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。比如现在比较流行的okHttp网络请求框架就是采用了责任链模式。下面将手写一个简易的责任链。
一、IChain
这是一个接口,所有的子链都需要实现该接口。
isConsume:当前链条是否消费
chain:责任链管理类
二、ChainManager
也是实现了IChain接口,并提供集合,存放所有的链条。
index:当前需要去执行的链条标识
chainList:责任链集合
三、责任链
创建几个子链
1、Chain1
2、Chain2
3、Chain3
以上三都实现了IChain接口,并且只要某个链消费以后,责任链也就不再执行下去。比如Chain1消费了,那么Chain2就不会执行了。
四、测试
创建测试类如下:
将责任链添加到集合中,并且将集合管理类作为参数传递给子链,这样在子链中调用doAction()方法就会调用管理类的该方法,然后根据下标,调用下一个子链的方法。
运行结果如下:
在Chain2中已经完成了这个任务,就不会交给Chain3了。