デザインパターンに関する標準的な本はありますか?[閉まっている]


49

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

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


これがあなたが考えていることかどうかはわかりませんが、Forrstにはたくさんの賢い開発物があります。
トレイPiepmeier

2
「デザインパターンの参照ソース」または「デザインパターンリソース」のタイトル(「参照」は「オンデマンドで検索する」とは意味しないため)のタイトルと、すべてのリストを本文に移動する(または削除する) )?


いくつかのきちんとした実装については、私はdofactoryの実装を見ていました(しかし、本を買いませんでした)。
スティーブンエバーズ

4
この質問に完全かつ包括的な回答が寄せられたため、他のデザインパターンの質問をこの質問の複製として閉じて、このトピックの正規のQ&Aと回答のペアとして指定しました。

回答:


58

デザインパターン:再利用可能なオブジェクト指向ソフトウェアの要素は、デザインパターンに関する標準的な本の定義に非常に近いものです。ウィキペディアの記事(エンファシス鉱山)によると:

本の最初の発行日は1994年10月21日で、1995年の著作権があり、2010年7月の時点で、本は38回目の印刷でした。この本は、1994年10月にオレゴン州ポートランドで開催されたOOPSLAミーティングで初めて公開されました。ソフトウェア工学の分野に大きな影響を与え、オブジェクト指向の設計理論と実践の重要な情報源と見なされています。以上の50万枚が販売されている英語と13個の言語で

ウォード・カニンガム、デザインパターンのパイオニアは、維持本のパターンのオンラインカタログWikiWikiWebを。そして、デザインパターンに関するウィキペディアの記事によると(再び、私のものを強調):

デザインパターンは、ブックデザインパターンの後にコンピュータサイエンスで人気を博した:再利用可能なオブジェクト指向ソフトウェアの要素が1994年に出版された、いわゆる「四人組」によって(ガンマら)。

同じ記事 で、このジャンルで注目すべきものとして参照されている他の本がかなりあります。

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

また、Head First Design Patternsをざっと読みましたが、Head Firstシリーズの他の本を読んだことがあるなら、それはシリーズのほとんどの本と同じ高品質で楽しいものです。

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

すべての一般的な再利用可能なソリューションは設計パターンと見なすことができるため、「設計パターン」という用語はやや曖昧です。上記の有名な本の1つ、特にGang of FourとFowlerの本で説明されているソリューションにラベルを適用する傾向に常に気付きました。設計パターンは独自の開発プロセスに従わず、非常に再利用可能な偶発的なソフトウェアソリューションであり、特定するの非常に困難です。

しかし、両方の書籍のオンラインカタログを言語固有の書籍の内容と比較すると、それらが多くの場合テンプレートとして使用されていることがわかります。ですから、両方の本は標準的な参照に非常に近く、両方の本はオブジェクト指向プログラミングに限定されていますが、GoF本は歴史的な観点からより重要なものです。


2
+1。実際、私はあなたに+5を与えたかったのですが、残念ながらそれは許可されていません。
ディパンMehta

パターン指向ソフトウェアアーキテクチャシリーズ全体は、さまざまなタイプのシステムのパターンに関するものです。ボリューム1は、ドメインを横断するアーキテクチャパターンとパターンに関するものです。ボリューム2は、同時システムに関するものです。ボリューム3は、ネットワーク/分散システムにおけるリソース管理に関するものです。ボリューム4は分散システムに関するものであり、ボリューム5はパターン言語に関するものであり、他の4つのボリュームのリファレンスです。質問を考えると、ボリューム5も適用できると思いますが、あまり時間を費やしていません...まだです。
トーマスオーエンズ

@Yannisのこれと最初の頭は、一般に静的型付け言語に基づいています。pythonのような動的言語のための良い本はありますか。
ravi404


27

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

よりアクセスしやすい紹介として、Head First:Design Patternsも適しています。「トレンド」の表紙に目をそらさないでください。読みやすいので、最初に読むとGoFの本の概念を理解しやすくなるでしょう。


23

ヘッドファーストデザインパターン

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

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

本当のオブジェクト指向設計の原則と、上司が継承についてあなたに言ったことすべてが間違っているかもしれない理由(そして代わりに何をすべきか)を学びたいのです。設計パターンを使用せずに小川を登るときに、これらの原則がどのように役立つかを学びたいと思います。

最も重要なのは、デザインパターンの「秘密の言語」を学び、同僚(およびカクテルパーティーのゲスト)がコマンド、ファサード、プロキシ、およびマティーニの一口の間に工場。Singletonが見た目ほど単純ではない理由、Factoryがよく誤解されている方法、またはDecorator、Facade、Adapterの実際の関係について深く理解すると、簡単に対処できます。

ヘッドファーストデザインパターンは、デコレーターは、「トレーディングスペース」のショーから何かある思考の当惑を避けるだろう...


この。これは非常にアクセスしやすく、ソフトウェアエンジニアリングへのアプローチ方法を完全に変更しました。
GSto

2
ヘッドファーストシリーズ全体は、特に開発者を始めるのに最適です。
トーマスストック

2
私は本が大好きですが、表紙は絶対に嫌いです!プログラマーではない同僚が先日私のオフィスを歩いて、本を見て「Head First Designer Patterns?ファッション業界に参入しますか?」と言いました。
ピート

1
@Peteカバーがあなたをより多くのトラブルに巻き込む可能性がある理由。彼女は明らかに二重の生活を送っています。fishbowl.pastiche.org/2005/08/12/...
ゴードン

10

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



これはいない書籍についてのデザインパターン。それはだのカタログパターン。最初はデザインパターンの簡単な紹介がありますが、紹介だけでは十分ではないと思います。
ヨルグWミットタグ

@JörgWMittagデザインパターンを作成するユニークなプロセスはありません。デザインパターンは比較的小さな再利用可能なソリューションです。設計パターンは、ソフトウェア開発の通常のプロセスを通じて作成されます。それらを区別するのは、それらの計り知れない再利用性です。関連する唯一の固有のプロセスは、ソリューションを設計パターンとして識別することであり、カタログはそれを細かく行います。
ヤンニス

9

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

代替テキスト

ウィキペディアから:

設計パターン:再利用可能なオブジェクト指向ソフトウェアの要素は、ソフトウェア設計の一般的な問題に対する反復的なソリューションを説明するソフトウェアエンジニアリングの本です。この本の著者は、Erich Gamma、Richard Helm、Ralph Johnson、John Vlissidesであり、Grady Boochによる序文があります。著者は、多くの場合、Gang of Four、GoF、またはGo4と呼ばれます。この本は2つのパートに分かれており、最初の2つの章ではオブジェクト指向プログラミングの機能と落とし穴について、残りの章では23の古典的なソフトウェア設計パターンについて説明しています。この本には、C ++およびSmalltalkの例が含まれています。


3

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

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

Wardは、初心者のデザイナーがSmalltalkの長所を活用し、短所を避けるのに役立つ5つのパターン「言語」を考案しました...

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

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

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

暑い夏の日にチューリッヒの屋上に座っていたECOOP'91 Erich GammaとRichard Helmの直前に、最終的にDesignPatternsになるパターンのカタログの非常に謙虚な始まりをまとめました...

ブルースが1991年に運営したOOPSLAワークショップで物事は本当に動き始めました。偶然にも、Erich Gamma、Richard Helm、Ralph Johnson、およびJohn Vlissidesがすべてそこにいました。彼らは後にデザインパターンの本を書いた4人一団になります...


2

パターンへのリファクタリングは、GoFブックで特定のデザイン/コードをパターンに向けてリファクタリングする方法を説明しているため、便利だと思います。これは、最初の学習曲線を克服するのに役立ちます。ああ、それは「パターンの幸福」についても考えています:)

また、パターン指向ソフトウェアアーキテクチャの最初の3巻が参考になることもあります。


1

デザインパターン

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

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

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


SourceMakingサイトは一見単純に見えますが、本当に素晴らしいリファレンスです。設計パターンとは別に、開発、アーキテクチャ、およびプロジェクト管理のアンチパターンの一部は陽気です。リファクタリングされたソリューションは、実際に軌道に乗っていない会議を保存するのに役立ちます。(デザインパターンの参照は悪くない)
どのような

1

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

他にも多くの本があります。クイックリファレンスが必要で、GoFブックが手の届かないところにある場合、ウィキペディアには通常、それらや他のデザインパターンに関する十分な情報があります。

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

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


1

「C#のアジャイルの原則、パターン、および実践」Robert C. Martin著。彼はこの本のJavaバージョンも持っていると思います。

また、パターン自体ではありませんが、完全なDDDアプローチを採用しなくても、ドメインドリブンデザインには優れた概念があります。

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

1

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

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

本の著者は権威ある専門家であり、彼の

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


1
それが何をするのか、何が良いのかをもっと説明してくれませんか?「リンクのみの答えは」かなりスタック所で歓迎されていません
ブヨ

@gnat:これはどうですか?
ディマ

よくあなたの最近の編集は確かに私にとって改善に見えます。回答の読者は、おそらく
アレクサンドレ

@gnat:あなたは彼が誰であるかを明らかに知っているので、私の答えを自由に編集してください。
ディマ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.