责任链模式详解

Posted sharkchao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了责任链模式详解相关的知识,希望对你有一定的参考价值。

定义:责任链模式是一条用户定义的链条,链条上每个节点都有自己的责任,当有任务进入时,从第一个节点开始处理,如果处理成功,则终止往下传递任务,否则将会把任务传递给下一个节点,依次类推,直至最后一个节点。

 

一起来看一个小例子:

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");
    }
}

 

以上是关于责任链模式详解的主要内容,如果未能解决你的问题,请参考以下文章

设计模式10-策略模式与责任链模式详解

责任链设计模式

JAVA设计模式之责任链模式

设计模式责任链模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )

前端探索告别烂代码 用责任链模式封装网络请求

JS设计模式责任链设计模式的代码示例