Search code examples
javatreebuilder-pattern

Is there a clean way to use the Builder pattern to build a multi-level tree?


It seems like the builder pattern is good if you're making some linear chain of things (java's StringBuilder) or creating an object with many properties (PizzaBuilder).

Can it be extended to build a a tree without specifying possibly confusing node locations?

   a
 / | \
c  d  e
     / \
    f   g   

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

  tb.addNode(2, 3, g)  //terrible

Or is just not a good idea with this pattern?

Thanks


Solution

  • The Builder pattern is useful for when you have a class with a set of properties, and have predefined types of that class with various sets of properties.

    You just want to make a tree:

    a.add(c, d, e);
    e.add(f, g);