原创

Apache Common-Chain责任链工具包的使用

1、整体架构说明

apcche common chain类图

  • Command: 是组成“责任链”的成员,用来执行任务(当其方法返回true时表示自己执行,否则不执行),属于员工,用来找属于的活来做。
  • Chain: 用加载和运行command,属于责任中的领导,用来分配工作给员工
  • ChainBase: 实现Chain接口,提高添加链和执行链的实现。
  • Filter: 过滤器,它也属于Command,不过它有postprocess()方法,会从末段开始执行所有属于Filter的postprocess方法,属于后勤人员,它有也能用来过滤(得看它放在链的哪个位置)

Context说明

Context主要的作用是存储责任链中传递的参数

2、pom引入

 <dependency>
     <groupId>commons-chain</groupId>
     <artifactId>commons-chain</artifactId>
     <version>1.2</version>
 </dependency>

3、责任定义

public class Command1 implements Command {
    @Override
    public boolean execute(Context context) throws Exception {
        System.out.println("Command1 is done ! the chain will going.");
        return Command.CONTINUE_PROCESSING;
    }
}
  • 实现Command接口
  • 返回值是一个布尔值。对应的有一个常量。false表示是没有处理完成。继续往下

4、责任链管理

public class CommandChain extends ChainBase {
    public CommandChain() {
        addCommand(new Command1());
        addCommand(new Command2());
        addCommand(new Command3());
        // 这里command1不会执行,因为command3中已经声明了流程终止
        addCommand(new Command1());
    }
}
  • 将多个责任进行串联管理。遇到了终止的责任不会继续往后传递。

5、demo示例

public class CommonChainTest {
    @Test
    public void commandChainTest() throws Exception {
        CommandChain commandChain = new CommandChain();
        ContextBase contextBase = new ContextBase();
        commandChain.execute(contextBase);
    }
}
正文到此结束
本文目录