JAXP中的设计模式
JAXP提供DOM和SAX两种解析方式。
DOM解析方式下使用DocumentBuilder解析生成Document。
使用Abstract Factory模式管理DocumentBuilder的创建。
图 1 创建DOM解析器
Document由一系列Node组成,以及继承于Node的Element。Node
使用了Composite模式。
图 2 Document的结构
SAX解析方式下使用SAXParser进行解析。使用Abstract Factory
模式管理SAXParser的创建。
图 3 创建SAX解析器
SAXParser提供了Parser和XMLReader两种解析方式入口,把真正的
解析委托给这两种实现。解析过程通过不同的handler插入外部行为,
这是Visitor模式。
图4 SAX解析行为
Transformer提供了基于XML的转换接口,转换操作抽象为根据Source
生成Result。Transformer的创建也使用了Abstract Factory模式。
图5 创建Transformer
Source和Result只携带基本标识信息,转换所需的其他信息都由
具体的实现来提供,这减轻了源和目标的依赖关系,但加重了
TransformerImpl的负担,TransformerImpl要取分不同的类型。
图6 Source和Result实现