1

助けが必要です ハイパーグラフとして表現された複雑なネットワークがあります ハイパー
グラフの頂点にはさまざまなタイプがあります :image,tag ....
何千もの頂点
を作成する必要がありますが、手動で作成するのは困難です!
この場合、ファクトリパターンが役立つと思いました
が、各頂点タイプには特定のプロパティがあり、コンストラクターにパラメーターとして渡す必要があります

この場合、ファクトリメソッドが正しい選択ですか? クイックダイアグラム

4

2 に答える 2

3

1 つ以上のパラメータを取る create メソッドを持つファクトリに問題はありません

Car blueCar = carFactory.create(CarColor.BLUE);
Car redCar = carFactory.create(CarColor.RED);

または複数の create メソッドを持つファクトリ:

Car blueCar = carFactory.createBlueCar();
Car redCar = carFactory.createRedCar();

ユースケースに応じて検討する価値があるかもしれない Factory の代替は、Builder パターンです。Builder にはパラメータのない create メソッドが 1 つしかありませんが、それによって作成されるオブジェクトのプロパティを設定するメソッドもあります。

carBuilder.setColor(CarColor.BLUE);
Car blueCar = carBuilder.create();
carBuilder.setColor(CarColor.RED);
Car redCar = carBuilder.create();

create メソッドが実際に内部でオブジェクトを作成する方法は、実装の詳細に任されています。たとえば、次のようになります。

  • パラメーターを使用してコンストラクターを呼び出す
  • デフォルトのコンストラクターを呼び出してから、返されたオブジェクトでいくつかのセッターを呼び出してその属性を変更します
  • パラメータに応じて異なるサブクラスをインスタンス化する
  • またはこれらのオプションの組み合わせ
于 2013-04-10T19:41:16.860 に答える
0

通常、ファクトリ メソッドは、作成されるオブジェクトの正確なクラスを指定する必要なく、オブジェクトを作成するために使用されます。

頂点の実装が異なる場合は、これを選択できます。

于 2013-04-10T19:41:35.877 に答える