定义:责任链模式是一条用户定义的链条,链条上每个节点都有自己的责任,当有任务进入时,从第一个节点开始处理,如果处理成功,则终止往下传递任务,否则将会把任务传递给下一个节点,依次类推,直至最后一个节点。
一起来看一个小例子:
BaseCase:
public interface BaseCase {
void doSomeThing(String json,CaseChain baseCase);
}
CaseChain:
public class CaseChain {
private List<BaseCase>mBaseCaseList = new ArrayList<>();
private int index = 0;
public CaseChain addCase(BaseCase baseCase){
mBaseCaseList.add(baseCase);
return this;
}
public void start(String json){
if (index == mBaseCaseList.size()){
return;
}
BaseCase baseCase = mBaseCaseList.get(index);
index++;
baseCase.doSomeThing(json,this);
}
}
OneCase:
public class OneCase implements BaseCase{
@Override
public void doSomeThing(String json,CaseChain CaseChain) {
if (json.equals("json")){
System.out.println("1处理好了");
return;
}
CaseChain.start(json);
}
}
TwoCase:
public class TwoCase implements BaseCase{
@Override
public void doSomeThing(String json,CaseChain CaseChain) {
if (json.equals("xml")){
System.out.println("2处理好了");
return;
}
CaseChain.start(json);
}
}
Test:
public class Test {
public static void main(String[] args){
CaseChain caseChain = new CaseChain();
caseChain.addCase(new OneCase())
.addCase(new TwoCase())
.start("xml");
}
}