定义:责任链模式是一条用户定义的链条,链条上每个节点都有自己的责任,当有任务进入时,从第一个节点开始处理,如果处理成功,则终止往下传递任务,否则将会把任务传递给下一个节点,依次类推,直至最后一个节点。
一起来看一个小例子:
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"); } }