17

ビルダー デザイン パターンを使用することの欠点は何でしょうか。いずれかがあります??

編集 - ビルダー デザイン パターンを使用することの悪い結果があるかどうか知りたいですか? GOF の本のように、彼らはデザイン パターンの良い結果と悪い結果について言及しています。しかし、彼らはビルダーの設計パターンの悪い結果については言及していません。

4

5 に答える 5

16

たとえば、コンストラクター引数やセッター/ゲッターがある場合よりも、DTO でより多くのコードが作成されます (さらに複雑になる可能性があります)。

私の意見では、これは大したことではありません。ほとんどの場合、追加のコードは多くありません。いくつかの必須パラメーターといくつかのオプションのパラメーターを持つオブジェクトがある場合、ビルダー パターンはそれだけの価値があります。

于 2010-05-13T18:04:52.893 に答える
10

パターンが不利になるのは、パターンが乱用/誤用された場合のみです。つまり、パターンは実際の技術的/機能的問題をまったく解決/適合しませんでした。次に、特定の問題を解決する別のパターンを探す必要があります。

これは特にビルダー パターンには当てはまりませんが、デザイン パターン全般に当てはまります。


更新: さまざまなデザイン パターン (具体的には GoF デザイン パターンの本に記載されているもの) と Java API の実際の例について知りたい場合は、次の回答を見つけることができます: Java の GoF デザイン パターンの例コア ライブラリが 便利です。パターンを詳細に説明するウィキペディアの記事へのリンクが含まれています。

于 2010-05-13T18:03:37.177 に答える
4

私はJarleの投稿を2番目にしています。

そうでなければ、不利な点になると:

  • DTOをHibernateやJAXBなどでマップする必要がある場合、ビルダーパターンは適切に一致しません。
  • 何らかの理由で可変オブジェクトが必要な場合。
  • 2つまたは3つのフィールドを持つ小さなDTOの場合、それは単なるオーバーヘッドであり、コンストラクターまたは2つを使用する必要があります。あなたが知っている/信じていない限り、DTOには将来さらに多くのフィールドが含まれるでしょう。
于 2010-05-14T10:45:53.700 に答える
4

ビルダー パターンは、Java のオプション パラメーターの欠如を克服するという考えを念頭に置いて使用すると、コンパイラーによって提供される静的分析 (および IDE によって提供されるすべての優れたリファクタリング機能) を失います。これは、IDE が何かが間違っていることをすぐに知らせるのではなく、実行時にのみいくつかの必須パラメーターが欠落していることを検出することを意味します...

于 2012-06-11T21:32:38.200 に答える
2

望遠鏡コンストラクターとの比較

  • 静的解析の損失
  • 必須パラメーターが欠落している場合、例外をスローしてどこかでキャッチする必要があります
  • ビルダーでボックス化された型を使用して、まだ設定されていないプリミティブ値を表すと、多くの自動ボックス化/ボックス化解除が行われ、見つけにくい NullPointerExceptions が発生します。望遠鏡コンストラクターではそのような問題はありません-プリミティブ値を渡すだけです。
  • より多くのコード
于 2015-10-06T13:50:06.873 に答える