0

次のようなビルダー パターンを使用する意味があるのはいつですか。

private static final Foo FOO1 = Foo.Builder().setX(...).setY(...).setZ(...).build();
private static final Foo FOO2 = Foo.Builder().setX(...).setY(...).setZ(...).build();
private static final Foo FOO3 = Foo.Builder().setX(...).setY(...).setZ(...).build();
... x100 ...

VSのようなもの

public class MyFoos {
  public static class Foo1 implements Foo {
    public String getX() {...}
    public String getY() {...}
    public String getZ() {...}
  }

  public static class Foo2 implements Foo {
    public String getX() {...}
    public String getY() {...}
    public String getZ() {...}
  }

  public static class Foo3 implements Foo {
    public String getX() {...}
    public String getY() {...}
    public String getZ() {...}
  }
  ... x100...
}

Foo の複雑さは重要ですか? たとえば、Foo.Builder() を使用した場合、次のような呼び出しが必要になる場合があります。

Foo.Builder().setSpecialFunction(新しい関数() {...})

Function はhttp://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/base/Function.htmlのようなものです

この状況では Builder パターンが適切ではないことを示唆していますか? そうでない場合、何が望ましいでしょうか?ありがとう!

4

1 に答える 1

1

2 番目の設計上の選択はひどいものです。継承を悪用しないでください。Builder パターン (Bloch の「Effective Java」によると) は、コンストラクターのパラメーターの数が定数 (Bloch によると 4 など) よりも多い場合に使用するのに適しています。

于 2012-07-11T13:45:54.833 に答える