码迷,mamicode.com
首页 > 其他好文 > 详细

责任链模式详解

时间:2019-01-15 20:30:52      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:imp   sys   tar   return   依次   传递   his   cas   一个   

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

 

一起来看一个小例子:

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

 

责任链模式详解

标签:imp   sys   tar   return   依次   传递   his   cas   一个   

原文地址:https://www.cnblogs.com/sharkchao/p/10273999.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!