Apache Common-Chain责任链工具包的使用
1、整体架构说明
- Command: 是组成“责任链”的成员,用来执行任务(当其方法返回true时表示自己执行,否则不执行),属于员工,用来找属于的活来做。
- Chain: 用加载和运行command,属于责任中的领导,用来分配工作给员工
- ChainBase: 实现
Chain
接口,提高添加链和执行链的实现。 - Filter: 过滤器,它也属于Command,不过它有
postprocess()
方法,会从末段开始执行所有属于Filter的postprocess方法,属于后勤人员,它有也能用来过滤(得看它放在链的哪个位置)
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);
}
}
正文到此结束