Apache Commons Chain

Apache Commons Chain是什么

Apache Commons Chain是对责任链设计模式的改造封装,让使用者更加方便的使用。

责任链模式

责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。
发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。

关键点:

  • 链上的各个节点可随意拆分和组装

Apache Commons Chain

Commons Chain实现了Chain of Responsebility和Command模式,其中的Catalog + 配置文件的方式使得调用方和Command的实现方的耦合度大大的降低,提高了灵活性。

示例

在下面三种情况下,命令链将结束:

  • 命令的execute方法返回true
  • 运行到链的尽头
  • 命令抛出异常

当有命令抛出错误时,链就会非正常结束。在Commons Chain中,如果有命令抛出错误,链的执行就会中断,将异常抛出给链的调用者。
许多应用需要对在命令之外定义的错误做明确的处理。Commons Chain提供了Filter接口来满足这个要求。

Filter继承了Command,添加了一个名为postprocess的方法。

只要Filter的execute方法被调用,不论链的执行过程中是否抛出错误,Commons Chain都将保证Filter的postprocess方法被调用。