有没有一种干净的方法来使用Builder模式来构建多级树?

mar*_*hon 5 java tree builder-pattern

如果您正在构建一些线性链(java的StringBuilder)或创建具有许多属性的对象(PizzaBuilder),那么构建器模式似乎很好.

是否可以扩展以构建一个树而不指定可能混淆的节点位置?

   a
 / | \
c  d  e
     / \
    f   g   

  TreeBuilder tb.addNode(levelNumber, parentNumber, nodeName) // I think this is terrible

  tb.addNode(2, 3, g)  //terrible
Run Code Online (Sandbox Code Playgroud)

或者这种模式不是一个好主意?

谢谢

kdg*_*ory 10

是的,构建器模式可用于树.树中的每个节点都需要自己的构建器实例.

这是一个带有根和两个子节点的示例.

Tree t = new TreeBuilder()
         .addNode(new TreeBuilder()
                  .addNode("foo")
                  .addNode("bar")
                  .toTree())
         .toTree()
Run Code Online (Sandbox Code Playgroud)

这是一个真实世界的例子,用于构建XML:http://practicalxml.svn.sourceforge.net/viewvc/practicalxml/trunk/src/main/java/net/sf/practicalxml/builder/(package.html包含示例代码).


Jia*_*ang 2

当您有一个具有一组属性的类,并且该类的预定义类型具有各种属性集时,构建器模式非常有用。

你只想制作一棵树:

a.add(c, d, e);
e.add(f, g);
Run Code Online (Sandbox Code Playgroud)