読書録: デザインパターン(GoF)
GoFのデザインパターンを読んだので、振り返りがてら紹介する。
- 作者: エリックガンマ,ラルフジョンソン,リチャードヘルム,ジョンブリシディース,Erich Gamma,Ralph Johnson,Richard Helm,John Vlissides,本位田真一,吉田和樹
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 1999/10
- メディア: 単行本
- 購入: 21人 クリック: 711回
- この商品を含むブログ (210件) を見る
目次
- 総評
- 評価(読みやすさ/効能/紹介されているデザインパターン)
- 読み方
- 所感
総評
本書は設計力を身につけるために必要な知識を身につけるためのものである。手っ取り早く手元のコードを綺麗にするために何某かのデザインパターンを採用したいというのであれば、身近にいる熟練したエンジニアにレビューをもらうのが格段に早い。もちろん、すぐに実践で活かせるパターンも紹介されているが、ある程度知識が備わっていなければそれを選び出すことはできない。本書ではデザインパターンを生成、構造、振る舞い、大きく3つに分類して紹介している。この枠組は、自身が問題に直面したとき、それを分析する手掛かりとなる。翻って、オブジェクト指向パラダイムに沿ってアプリケーションを構築するための足がかりとなるだろう。
評価
読みやすさ
- 私は読み進めるのに苦労した。読み始めるにあたって私は手元にあるサーバーサイドプログラムでどのようにデザインパターンを活かそうかという視点が強く、著者の例示をうまく飲み込めなかったためだ。GUIアプリケーション(テキストエディタなど)を例にデザインパターンを説明することが多いとわかっていればもう少し読みやすかったのではないか。
- また、例示されるアプリケーションが古くてイメージが湧きづらいので、例を読めば理解できると高をくくって読み進めると苦労するだろう。本書の大まかな構成は良いが、文章構成(文章の論理構造)が簡潔でなく、サラッと読み進めると理解できていなかったりする。
効能
- オブジェクト指向言語に対する理解を深める助けになる。(この本が相応しいかはともかく)
- 型に従ったプログラミングを意識するようになる。
- 設計力の基礎を身につけることができる。
紹介されているデザインパターン
振る舞いに関するパターンのInterpreterパターンやIteratorパターンは読み飛ばして良いだろう。Interpreterパターンは用途が非常に限定的であるし、Iteratorパターンは今日のプログラミング言語が標準的に備えている機能で賄えるためである。それ以外はどれも一読の価値があるだろう。(日常的に使わないパターンもあるかもしれないが)
【生成】
- Abstract Factory
- Builder
- Factory Method
- Prototype
- Singleton
【構造】
- Adapter
- Bridge
- Composite
- Decorator
- Facade
- Flyweight
- Proxy
【振る舞い】
- Chain of Responsibility
- Command
InterpreterIterator- Mediator
- Memento
- Observer
- State
- Strategy
- Template Method
- Visitor
読み方
まずはパターンをすべて覚えることよりも、大きく3つの観点でパターンが別れていることにどのような意味があるのかを理解することが重要だろう。ただし、それを理解するには各パターンの概要をある程度押さえておく必要はあるだろう。
- プログラミング初学者にはパターンを学ぶことを後回しにして、1章をじっくり読むか、他の本を読んでオブジェクト指向について理解を深めることをオススメする。
- 駆け出しのエンジニア(Railsなどのフレームワークを使って開発ができるようになったレベル)には1、3〜6章を順に読むことをオススメする。
3〜5章では、それぞれ生成、構造、振る舞いに関する種々のパターンを以下の構成で紹介している。私は「実装」と「サンプルコード」の節は読み飛ばした。パターンの特徴(目的と長所、短所)を捉えることを目的としていたためである。1パターンあたり30分程度かかった。1ヶ月程度で一通り読み終わるはずだ。
- 目的
- 別名
- 動機
- 適用可能性
- 構造
- 構成要素
- 協調関係
- 結果
- 実装
- サンプルコード
- 使用例
- 関連するパターン