初めて学ぶ方、過去に挫折した経験のある方、知識を確固たるものにしたい方を対象に、イラストや写真を使ってやさしく楽しく解説する人気のHead Firstシリーズのデザインパターン編。刺激的なレイアウト、思わず膝を叩く見事なたとえ、引き込まれる小話、楽しいクイズやパズルで飽きることなく読み進むことができます。複雑難解なデザインパターンの概念が面白いほどよくわかる、目からウロコの画期的な書籍です。
Head Firstデザインパターン
―頭とからだで覚えるデザインパターンの基本
Eric Freeman, Elisabeth Freeman, Kathy Sierra, Bert Bates 著、佐藤 直生 監訳、木下 哲也, 有限会社 福龍興業 訳
- TOPICS
- Head First , Programming , Java
- 発行年月日
- 2005年12月
- PRINT LENGTH
- 604
- ISBN
- 4-87311-249-4
- 原書
- Head First Design Patterns
- FORMAT
正誤表
ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。
1-5刷正誤表
2008年12月18日
■p.319 2番目のコメント
【誤】メルは別の手段を採用しています。彼はArrayを使っているため
【正】メルは別の手段を採用しています。彼は配列を使っているため
■p.356囲みのすぐ下
【誤】このパターンついて考えて見ましょう。
【正】このパターンについて考えてみましょう。
■p.423一番下のカード
【誤】
Template Method――処理内でアルゴリズムの.....
【正】
State――オブジェクトの内部状態が変化した際に、オブジェクトがその振舞いを変更できる。オブジェクトはそのクラスを変更したように見える。
■p.511左カラム 6行目
【誤】窓を破ることのは、
【正】窓を破ることは、
■p.514 下から12行目
【誤】「適用可能性」のセクション見直して
【正】「適用可能性」のセクションを見直して
■p.521 1行目
【誤】パターン扱うものがクラスか
【正】パターンを扱うものがクラスか
■p.531 9行目
【誤】Vissides
【正】Vlissides
目次
序章 この本が対象としている読者 読者の「脳」が何を考えているか理解しています メタ認知 注意事項 テクニカルレビューアの紹介 謝辞 1章 デザインパターン入門:デザインパターンへようこそ SimUDuckアプリケーション 継承について考えるジョー… ソフトウェア開発における1つの変わらぬもの 不変な部分から変化する部分を分離する 鴨の振舞いを設計する Duckコードをテストする 振舞いを動的に設定する カプセル化された振舞いに対する全体像 「HAS-A」は「IS-A」より優れている場合がある Strategyパターン 共有されたパターン語彙の威力 どのようにデザインパターンを使用するか? デザインツールボックスのためのツール デザインパズルの答え 2章 Observerパターン:オブジェクトを事情通に 気象監視アプリケーション Observerパターンとの出会い パブリッシャ+サブスクライバ=Observerパターン 5分間のドラマ:監視(observation)の対象(subject) Observerパターンの定義 疎結合の威力 気象観測所を設計する 気象観測所を実装する Javaの組み込みObserverパターンを使用する java.util.Observableの暗黒面(ダークサイド) デザインツールボックスのためのツール エクササイズの答え 3章 Decoratorパターン:オブジェクトの装飾 スターバズコーヒーへようこそ 開放/閉鎖原則(Open-Closed Principle) Decoratorパターンとの出会い デコレータを使って飲み物の注文を構築する Decoratorパターンの定義 飲み物を装飾する スターバズのコードを記述する 実世界のデコレータ:Java I/O 独自のJava I/Oデコレータを記述する デザインツールボックスのためのツール105 エクササイズの答え 4章 Factoryパターン:OOの利点を活用した構築 「new」を見たら、「具象」と考える オブジェクト町ピザ オブジェクト作成をカプセル化する 簡単なピザファクトリを構築する Simple Factoryの定義 ピザ屋用のフレームワーク サブクラスに決定させる PizzaStoreを作成しよう ファクトリメソッドを宣言する Factory Methodパターンとの出会い 並列クラス階層 Factory Methodパターンの定義 非常に依存関係の多いPizzaStore オブジェクトの依存関係を考察する 依存性反転の原則 それでは、PizzaStoreに戻りましょう 一連の食材 食材ファクトリを構築する Abstract Factoryを考察する 舞台裏 Abstract Factoryパターンの定義 Factory MethodとAbstract Factoryの比較 デザインツールボックスのためのツール エクササイズの答え 5章 Singletonパターン:唯一のオブジェクト 唯一無二 小さなSingleton 典型的なSingletonパターンの実装を分析する Singletonの告白 チョコレート工場 Singletonパターンの定義 ヒューストン!ヒューストン!ハーシー!ハーシー!問題が発生しました…… JVMになってみよう マルチスレッドを扱う Singletonに関するQ&A デザインツールボックスのためのツール エクササイズの答え 6章 Commandパターン:呼び出しのカプセル化 Home Automation or Bust社 リモコン ベンダのクラスを調べる その間に食堂に戻って…… 食堂のやり取りを調べましょう オブジェクト町の食堂の役割と責務 食堂からCommandパターンへ 最初のコマンドオブジェクト Commandパターンの定義 Commandパターンとリモコン リモコンを実装する リモコンを稼動させる マニュアルを記述する時が来ました 状態を使用してアンドゥを実装する すべてのリモコンにはパーティモードが必要です マクロコマンドを使用する Commandパターンのその他の使用法:リクエストのキューイング Commandパターンのその他の使用法:リクエストのロギング デザインツールボックスのためのツール エクササイズの答え 7章 AdaptorパターンとFacadeパターン:適合可能にする 身の回りのアダプタ オブジェクト指向アダプタ Adapterパターンの説明 Adapterパターンの定義 オブジェクトアダプタとクラスアダプタ 今夜の対談:オブジェクトアダプタとクラスアダプタ 実世界のアダプタ EnumerationをIteratorに適合させる 今夜の対談:DecoratorパターンとAdapterパターン スイートホームシアタ 照明、カメラ、ファサード! ホームシアタファサードを構築する Facadeパターンの定義 最小知識の原則(Principle of Least Knowledge) デザインツールボックスのためのツール エクササイズの答え 8章 Template Methodパターン:アルゴリズムのカプセル化 コーヒークラスと紅茶クラスを作る CoffeeとTeaの抽象化 さらに設計を進める prepareRecipe()を抽象化する 何を行ったのか? Template Methodとの出会い 紅茶を作ってみましょう テンプレートメソッドにより何が得られましたか? Template Methodパターンの定義 コード詳説 テンプレートメソッドをフックする フックを使う Coffee? Tea? いいえ、TestDriveを実行しましょう ハリウッド原則 ハリウッド原則とテンプレートメソッド 実際のテンプレートメソッド テンプレートメソッドを使ってソートする ソートすべき鴨がいくつかあります 鴨を比較する 鴨ソートマシンの作成 フレームでスイング アプレット 今夜の対談:Template MethodとStrategy デザインツールボックスのためのツール エクササイズの答え 9章 IteratorパターンとCompositeパターン:適切に管理されたコレクション オブジェクト町食堂とオブジェクト町パンケーキハウスの合併 メニューの実装を比較する 反復処理をカプセル化できますか? Iteratorパターンとの出会い DinerMenuにイテレータを追加する 設計を確認する java.util.Iteratorを使って整理する これで何が得られるのか? Iteratorパターンの定義 単一の責務 イテレータとコレクション Java 5でのイテレータとコレクション これで一安心だと思ったら…… Compositeパターンの定義 コンポジットを使ってメニューを設計する コンポジットメニューを実装する イテレータを思い出す Nullイテレータ イテレータとコンポジットを合わせた魔法…… デザインツールボックスのためのツール エクササイズの答え 10章 Stateパターン:物事の状態 どのように状態を実装するか? 状態マシンの基礎 状態マシンの第一弾 やっぱり来ました……変更要求です! 面倒な「状態」…… StateインタフェースとStateクラスを定義する Stateクラスを実装する ガムボールマシンを書き直す Stateパターンの定義 State対Strategy Stateの健全性チェック 危うく忘れるところでした! デザインツールボックスのためのツール エクササイズの答え 11章 Compoundパターン:パターンのパターン Compoundパターン 鴨との再会 アダプタを追加する デコレータを追加する ファクトリを追加する コンポジットとイテレータを追加する オブザーバを追加する パターンの要約 「鴨」瞰図:クラス図 モデル/ビュー/コントローラの歌 デザインパターンはMVCへの鍵である パターン色の眼鏡でMVCを考察する MVCを使ってビートを制御する…… モデル ビュー コントローラ Strategyパターンを探究する モデルを適合させる これでHeartControllerの準備ができました MVCとWeb デザインパターンとモデル2 デザインツールボックスのためのツール エクササイズの答え 12章 パターンの有効利用:実世界でのパターン オブジェクト町のガイド デザインパターンの定義 デザインパターンの定義についてより詳しく調べる フォースとともにあらんことを パターンカタログ パターンの作成方法 デザインパターンの作者になるには デザインパターンを編成する パターンで考える パターンについての知力 共有のボキャブラリの力を忘れない ボキャブラリを共有する方法のトップ5 「Gang of Four」とオブジェクト町を回る デザインパターンに関する他のリソース パターン動物園 アンチパターンの弊害を撲滅する デザインツールボックスのためのツール オブジェクト町を去る…… 13章 付録:残りのパターン Proxyパターン Bridgeパターン Builderパターン Chain of Responsibilityパターン Flyweightパターン Interpreterパターン Mediatorパターン Mementoパターン Prototypeパターン Visitorパターン index 562