Head Firstデザインパターン

―頭とからだで覚えるデザインパターンの基本

[cover photo]
TOPICS
Head First , Programming , Java
発行年月日
PRINT LENGTH
604
ISBN
4-87311-249-4
原書
Head First Design Patterns
FORMAT
Print
5,060円
この商品は品切れ再入荷未定です

初めて学ぶ方、過去に挫折した経験のある方、知識を確固たるものにしたい方を対象に、イラストや写真を使ってやさしく楽しく解説する人気のHead Firstシリーズのデザインパターン編。刺激的なレイアウト、思わず膝を叩く見事なたとえ、引き込まれる小話、楽しいクイズやパズルで飽きることなく読み進むことができます。複雑難解なデザインパターンの概念が面白いほどよくわかる、目からウロコの画期的な書籍です。

正誤表

ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。

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