XMLBuilder
features logic to construct a tree structure using instances of TagNode
.The DOMBuilder
contains the exact same tree-construction logic, only it uses instances of classes that
implement the Element
interface (from the Document Object Model).There is a great deal of duplicated tree-construction code in each of the builders because TagNode
and Element
don't
share a common interface.TagNode
and Element
shared a common interface, the builder logic would become identical, thereby allowing it to be shared in a builder superclass. Sounds like a job for the Adapter pattern.