web-dev-qa-db-ja.com

デザインパターンに関する標準的な本はありますか?

私はデザインパターンの学習に興味があり、このテーマの学習において一流の本と見なされるものを知りたいです。

ベストプラクティス、設計方法論、および設計パターンに関するその他の役立つ情報を説明するための事実上の標準である本はありますか?その本はどうして特別なのですか?

49
mW00t

設計パターン:再利用可能なオブジェクト指向ソフトウェアの要素 は、設計パターンに関する正規の本の定義に非常に近くなります。 そのウィキペディアの記事 (私の強調)によると:

この本の最初の発行日は1994年10月21日で、1995年の著作権があり、2010年7月の時点で、この本は8番目の印刷物に入っていました。この本は、1994年10月にオレゴン州ポートランドで開催されたOOPSLA会議で最初に一般に公開されました。ソフトウェアエンジニアリングの分野に非常に影響力があり、オブジェクト指向の設計理論と実践の重要な情報源と見なされています。 500,000コピー以上販売されています英語および他の13の言語

ワードカニンガム 、デザインパターンのパイオニアである 本のパターンのオンラインカタログWikiWikiWeb を管理しています。そして、ウィキペディアの記事 デザインパターン によると(ここでも、強調してください):

デザインパターン著書 『デザインパターン:再利用可能なオブジェクト指向ソフトウェアの要素』が1994年に出版された後にコンピュータサイエンスで人気を得ましたいわゆる "Gang of Four"(Gamma et al。)による。

同じ記事 で参照されている他のかなりの本がこのジャンルで注目されています:

私がファウラーの本を読んだものの中で、それは非常に影響力があり、良い本です。ある時点で、それは私の好みには少しあいまいですが、全体的には楽しい本です。本に含まれているパターンの オンラインカタログ があり、最小限の説明があります。

ヘッドファーストのデザインパターンについても簡単に説明しました。ヘッドファーストシリーズの他の本を読んだことがあれば、それは シリーズのほとんどの本 と同じように高品質で楽しいものです。

Head Firstは、O'Reilly Mediaによって発行された、多くのトピックに関する一連の入門用の教科書です。それは、パズル、ジョーク、非標準のデザインとレイアウト、そして特定のトピックに読者を没頭させる魅力的で会話的なスタイルの、非正統的で視覚的に集中した、読者が関与する組み合わせを強調します。

すべての一般的な再利用可能なソリューションは設計パターンと見なすことができるため、「設計パターン」という用語はややあいまいです。私は、上に挙げた著名な本の1つ、より具体的にはGang of FourとFowlerの本で説明されているソリューションにラベルを適用する傾向に常に気づきました。設計パターンは独自の開発プロセスに従っていません。それらはたまたま非常に再利用可能な通常のソフトウェアソリューションであり、 非常に識別するのが難しい です。

しかし、両方の本のオンラインカタログを言語固有の本の内容と比較すると、テンプレートとしてよく使用されていることに気付くでしょう。したがって、どちらの本も オブジェクト指向プログラミング に限定されていますが、どちらの本も正規参照に非常に近く、歴史的な観点からはGoF本がより重要であると思います。

59
yannis

ギャングオブフォーブック- デザインパターン:再利用可能なオブジェクト指向ソフトウェアの要素 はおそらく、デザインパターンに関する業界標準に最も近いものです。

よりわかりやすい導入には、 Head First:Design Patterns も良いでしょう。 「トレンディ」の表紙に気を取られないでください。これは読みやすく、GoFブックの概念を最初に読んだ方がはるかに簡単に理解できるので役立ちます。

27
richeym

Head First Design Patterns

いつでも、世界のどこかで、誰かがあなたと同じソフトウェア設計の問題に苦しんでいます。ホイール(またはさらに悪いことに、パンクしたタイヤ)を再発明したくないので、デザインパターンに目を向けます。これは、同じ問題に直面した人が学んだ教訓です。デザインパターンを使用すると、他の人のベストプラクティスと経験を活用できるため、他のことに時間を費やすことができます。もっと難しいこと。もっと複雑なもの。もっと楽しいもの。

あなたは重要なパターンについて学びたい-それらを使う理由、それらを使うとき、それらを使う方法(そしてそれらを使わないとき)。しかし、本の中でパターンがどのように見えるかを確認するだけでなく、パターンが「実際に」どのように見えるかを知りたいのです。彼らのネイティブ環境で。言い換えれば、実際のアプリケーションで。また、Java APIでのパターンの使用方法、および独自のコードでJavaの組み込みパターンサポートを利用する方法についても学びます。

あなたは本当のOO設計原理と、上司が継承についてあなたに言ったすべてが間違っているかもしれない理由(そして代わりに何をすべきか)を学びたいと思います。それらの原理が次にどのように役立つかを学びたいと思います。あなたはデザインパターンのない小川を登っています。

最も重要なのは、デザインパターンの「秘密の言語」を学び、同僚、およびカクテルパーティーのゲストに、コマンド、ファサード、プロキシ、およびマティーニの一口の間にある工場。シングルトンが思ったほど単純ではない理由、ファクトリーがよく誤解されている理由、またはデコレーター、ファサード、アダプターの実際の関係について深く理解すると、簡単に対抗できます。

Head First Design Patternsを使用すると、Decoratorが "Trading Spaces"ショーからのものであると考えるの恥ずかしさを回避できます...

23
Gordon

はい、デザインパターンに関する有名な本があります: デザインパターン:再利用可能なオブジェクト指向ソフトウェアの要素 で、作者はしばしば「ギャングオブザギャング」と呼ばれていますFour "(GoF)であり、デザインパターンに関するほとんどすべてのテキストで参照されています。

10
Jonas

デザインパターン:再利用可能なオブジェクト指向ソフトウェアの要素

alt text

wikipedia から:

設計パターン:Elements of Reusable Object-Oriented Softwareは、ソフトウェア設計における一般的な問題の繰り返しの解決策を説明するソフトウェアエンジニアリングの本です。この本の著者は、Erich Gamma、Richard Helm、Ralph Johnson、およびJohn Vlissidesであり、Grady Boochによる序文があります。著者は、Gang of Four、GoF、またはGo4と呼ばれることがよくあります。この本は2つのパートに分かれており、最初の2つの章ではオブジェクト指向プログラミングの機能と落とし穴について、残りの章では23の古典的なソフトウェア設計パターンについて説明しています。この本には、C++とSmalltalkの例が含まれています。

9
Piers Myers

最高のデザインパターンWebサイトの1つは、最初のWikiであるWard Wikiです。開始ページとしては、 http://c2.com/cgi/wiki?HistoryOfPatterns を参照してください。

1987年、ウォードとケントは、設計の完成に問題があったTektronixの半導体テストシステムグループと相談していました。彼らは彼らが研究してきたパターンのものを試してみることにしました。建物の占有者がそれを設計するべきであると言ったアレクサンダーのように、ワードとケントはユーザーの代表(トレーナーとフィールドエンジニア)に設計を完成させました。

Wardは、初心者のデザイナーがSmalltalkの長所を活用し、その弱点を回避するのに役立つ5つのパターン「言語」を考え出しました...

ウォードとケントは、ユーザーが設計したインターフェースの(確かに質素な)優雅さに驚いた。彼らはオーランドのOOPSLA 87でこの実験の結果を報告しました。彼らはパネルの位置を書き、オブジェクトはどこから来るのか(== --- ==)のノルムカースのワークショップで発表しました彼らは顔が青くなるまでパターンを話しました、そして多くの同意を得ましたが、より具体的なパターンがなければ、誰も登録していませんでした。

その間、Erich Gammaは、博士論文の一部として、ET ++でのオブジェクト指向設計についての執筆と反映に忙しかった。 Erichは、繰り返し発生する設計構造またはパターンが重要であることを認識していました。問題は、それらをどのようにキャプチャして伝達するかでした。

ブルース・アンダーソンは、ErichGammaが出席したTOOLS 90で講演しました。エーリヒは話が好きだった。ブルースはEcoopOopsla90(オタワ)で論文を発表し、BOFをToward a Architecture Handbookで実行し、彼、Erich Gamma、Richard Helmなどが議論に参加しましたパターンについて。 RichardとErichが初めて会ったのはそのときであり、再利用可能なOOソフトウェアを書くことの背後にある主要なアイデアについて、共通のアイデアを共有していることに気付きました。

ECOOP'91の直前、エリックガンマとリチャードヘルムは、夏の暑い日にチューリッヒの屋上に座って、最終的にDesignPatternsになるパターンのカタログの非常に控えめな始まりをまとめました...

1991年にBruceが運営したOOPSLAワークショップでは、物事が実際に動き始めました。偶然にも、Erich Gamma、Richard Helm、Ralph Johnson、およびJohn Vlissidesが全員揃っていました。それらは後に Design Patterns の本を執筆したGang of Fourになります...

3
Gaurav

パターンへのリファクタリング は、特定の設計/コードをGoFブックのパターンに向けてリファクタリングする方法を説明しているため、簡単に使用できると思います。これは、初期の学習曲線を克服するのに役立ちます。ああ、それはまた、「パターンの幸福」について熟考しています:)

また、パターン指向ソフトウェアアーキテクチャの最初の3巻を読むとよいでしょう。

2
finrod

C++のデザインパターンに特に興味がある場合は、Andrei Alexandrescuによる Modern C++ Design を試してください。

この本では、C++でFactory、Singleton、Visitorなどの一般的に使用されるパターンを実装する方法について説明しています。また、スマートポインター、テンプレートメタプログラミング、ポリシーベースのクラス設計など、C++固有のトピックについても説明します。

本の著者は 権威ある専門家 であり、彼のことで知られています

テンプレートのメタプログラミングを介して実装されたポリシーベースの設計に関する先駆的な作業。これらのアイデアは、彼の本Modern C++ Designに明記されており、最初に彼のプログラミングライブラリであるLokiに実装されました。彼はまた、MOJOライブラリーに「移動コンストラクター」の概念を実装しました。彼はC/C++ UsersJournalに署名された「Generic <Programming>」という署名付きで...

1
Dima

オリジナルの本「デザインパターン:再利用可能なオブジェクト指向ソフトウェアの要素」は、オブジェクト指向のデザインパターンに関する優れたリソースです。

他にもたくさんの本があります。クイックリファレンスが必要でGoFブックが手元にない場合、Wikipediaには通常、それらやその他のデザインパターンに関する十分な情報があります。

これらは私が使用する主要なものです。また、人々はパターン形式をプロジェクト管理などの他のものに適用し始めていることにも注意してください。

知っておくべきアンチパターンについて知りたい場合は、「AntiPatterns:Refactoring Software、Architectures、and Projects in Crisis」と「Refactoring:Improving the Design of Existing Code」のセクションが2冊あります。コードのにおい、アンチパターンの別名。

1
indyK1ng

デザインパターン

このチュートリアルサイトには、次のサブセクションが含まれています

  • 各デザインパターンの意図
  • 設計パターンの実際の構造
  • 問題の説明
  • 問題に関する詳細な議論
  • パターンに到達する方法のチェックリスト
  • パターンに到達する際の経験則。
  • C#、C++、Delphi、JavaおよびPHPを含むデザインパターンのコードスニペット

このサイトには、アンチパターン、UML、リファクタリングに関するガイドも含まれています。

1
pramodc84

Robert C. Martinによる「C#でのアジャイル原則、パターン、およびプラクティス」。私は彼がJava本のバージョンも持っていると思います。

また、パターン自体ではありませんが、完全なDDDアプローチを採用しなくても、ドメイン駆動設計にはいくつかの優れたコンセプトがあります。

  * Ubiquitous Language
  * Code first approach (vs. DB first)
  * etc.
1
Kevin Nelson