zoukankan      html  css  js  c++  java
  • 责任链模式详解

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

    一起来看一个小例子:

    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");
        }
    }
  • 相关阅读:
    ROM、RAM、DRAM、SRAM和FLASH的区别
    寄存器读写为什么需要用位操作符
    不同变量存放在什么地方
    C语言中数据类型对变量的作用
    内存寻址、对齐,变量左值和右值
    位、字节、半字、字、内存位宽
    面试题10- II. 青蛙跳台阶问题
    509. 斐波那契数
    面试题10- I. 斐波那契数列
    面试题32
  • 原文地址:https://www.cnblogs.com/sharkchao/p/10273999.html
Copyright © 2011-2022 走看看