web-dev-qa-db-ja.com

どのデザインパターンを使用するか

デザインパターンは非常に好きですが、デザインパターンをいつ適用できるかはわかりにくいと思います。デザインパターンが説明されている多くのWebサイトを読みました。私はそれらのほとんどを理解していますが、自分の状況でパターンを認識することは難しいと思います。

それで、私はこの質問をするのです。どのデザインパターンを使用するかについてのガイドライン/アラームベルはありますか。

たとえば、作成する必要があるオブジェクトを決定するためにswitchステートメントを実行している場合は、おそらくファクトリデザインパターンを使用する必要があります。したがって、この場合のswitchステートメントは、Factoryパターンを使用するための「アラームベル」です。

それでは、デザインパターンを決定するための「アラームベル」をもっと知っていますか?

101
Martijn

まずはこのページをご覧ください: http://codebetter.com/jeremymiller/2006/04/11/six-design-patterns-to-start-with/

ここでジェレミーはパターンのいくつかのセットを扱っていますが、これらの記事を読んでからフォローアップする必要があります: http://codebetter.com/jeremymiller/2005/09/01/learning-about-design-パターン/

また、この記事のリファレンス(特にEric Gammaのインタビュー)を使用すると、設定する必要があります。

37
J K

通常、プロセスは逆です。設計パターンを使用する状況を探しに行くのではなく、最適化できるコードを探します。正しく構造化されていないと思われるコードがある場合。問題を解決する設計パターンを見つけてください。

設計パターンは、構造上の問題を解決するためのものであり、設計パターンを使用できるようにするためだけにアプリケーションを設計しないでください。

96
Joep Killaars

それらを学び、ゆっくりとそれらを調整し、それらをいつ使用するかを理解できるようになります。シングルトンパターンのような単純なものから始めます。

オブジェクトの1つのインスタンスと1つだけを作成する場合。シングルトンパターンを使用します。オプションオブジェクトを使用してプログラムを作成しているとします。あなたはそれらのいくつかを望んでいません、それはばかげているでしょう。シングルトンは、2つ以上存在しないことを確認します。シングルトンパターンはシンプルで、よく使われ、本当に効果的です。

5
Peter Rasmussen

@Peter Rasmussenに完全に同意します。

設計パターンは、よく発生する設計問題に対する一般的な解決策を提供します。

以下のアプローチに従ってください。

  1. 各パターンの意図を理解する
  2. 各パターンのチェックリストまたはユースケースを理解する
  3. 問題の解決策を考え、解決策が特定のパターンのチェックリストに該当するかどうかを確認してください
  4. そうでない場合は、単にデザインパターンを無視して、独自のソリューションを作成します。

便利なリンク:

sourcemakingintentstructureおよびchecklistC++やJavaを含む複数の言語で美しく

wikipedia :C#やJavaを含む複数の言語での構造、UML図、および実例を説明します。

チェックリストおよびルールそれぞれの親指のsourcemakding design-patternはあなたが探しているalram bellを提供します。

4
Ravindra babu