这个标题可能不是很确切。确切的说法应该是Commons Digester中的策略模式。
Commons Digester是Apache Jakarta的一个XML到Java Object的映射工具包。
Tomcat和Struts都使用这个工具包来处理XML配置文件。在Tomcat中并没有直接使用Digester的*.jar文件而是将Digester做了一些简化放到了org.apache.tomcat.util.digester包中。我们下面的讨论是基于org.apache.tomcat.util.digester包的,这也是我们使用这个标题的用意,但是这里的讨论也完全适用于Digester。
具体的结构图如下:
这里涉及到两个策略模式。Rules是一个策略,封装了选择Rule的逻辑,可以通过定制Rules来实现自定义匹配逻辑。Rule是另一个策略,这是显而易见,封装了某种操作。如果需要自定义Rule那么必须认真考虑相关堆栈的状态。通常的做法是谁改变谁负责恢复。
关于模式的相关问题可以参阅面向对象设计(Object-Oriented Design)。如果您对这里的内容感兴趣可以和我们联系!