5

線形チェーンを作成する場合(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

それとも、このパターンでは良い考えではありませんか?

ありがとう

4

2 に答える 2

12

はい、ビルダー パターンはツリーに使用できます。ツリー内の各ノードには、独自のビルダー インスタンスが必要です。

以下は、ルートと 2 つの子ノードを持つ例です。

Tree t = new TreeBuilder()
         .addNode(new TreeBuilder()
                  .addNode("foo")
                  .addNode("bar")
                  .toTree())
         .toTree()

https://sourceforge.net/p/practicalxml/code/HEAD/tree/trunk/src/main/java/net/sf/practicalxml/builder/ (package.html にはサンプル コードが含まれています)。

于 2012-02-18T13:23:45.053 に答える
2

Builder パターンは、一連のプロパティを持つクラスがあり、さまざまなプロパティ セットを持つそのクラスの事前定義された型がある場合に役立ちます。

木を作りたいだけです:

a.add(c, d, e);
e.add(f, g);
于 2012-02-18T03:06:17.367 に答える