第1章
はじめてのデザインパターン
第2章
逆引きカタログ ロジック編
- Singleton (シングルトン)
- Factory/Factory Method
(ファクトリ/ファクトリメソッド) - Strategy (ストラテジ)
- Composite (コンポジット)
- Visiter (ビジタ)

| → | デザインパターンは「良い設計の虎の巻 |
| → | デザインパターンのメリット |
| カタログ名 | 説明 |
|---|---|
| GoFの23のパターン | デザインパターンと言えばこれを指すというくらいのバイブル的存在。 基本的な23のパターンがカタログ化されている。 |
| J2EEパターン | サーブレット/JSP/EJB/JMXを中心にJ2EEに特化したデザインパターン集。 ここで紹介されたパターンはStrutsなどのフレームワークにも適用されている。 |
| アーキテクチャパターン | MVCやレイヤなどシステム全体のアーキテクチャ(構造)をパターン化したもの。 |
| アナリシスパターン | 医療、在庫管理、会計、金融などの具体的な業務システムにおける設計やモデリングのぱたーんをカタログ化したもの。 |
| アンチパターン | デザインパターンが「こうあるべき」ものなのに対して、 アンチパターンは「こうしてはいけない」ものをカタログ化したもの。 |
| No | 種別 | パターン名 | 目的 |
|---|---|---|---|
| 1 | 生成に関する パターン |
Abstract Factory (アブストラクトファクトリ) |
関連する部品を生成するファクトリごと切り替える |
| 2 | Builder(ビルダ) | 複雑なオブジェクトを生成する | |
| 3 | Factory Method (ファクトリメソッド) |
サブクラスのメソッドにインスタンスの生成方法をまかせる | |
| 4 | Prototype(プロトタイプ) | コピーしてインスタンスを生成する | |
| 5 | Singleton(シングルトン) | 生成するインスタンスを1個に制限する | |
| 6 | 構造に関する パターン |
Adapter(アダプタ) | インタフェースが一致しないクラスを再利用する |
| 7 | Bridge(ブリッジ) | 機能と実装の階層を分離し、拡張を別々に行う | |
| 8 | Composite(コンポジット) | 再帰的なオブジェクト構造を表現する | |
| 9 | Decorator(デコレータ) | 元になるオブジェクトを包み込んで機能を拡張する | |
| 10 | Facade(ファサード) | 複雑な処理を呼び出すシンプルな入り口を提供する | |
| 11 | Flyweight(フライウェイト) | インスタンスを共有して、インスタンスの生成コスト・使用メモリを抑える | |
| 12 | Proxy(プロキシ) | 代理(プロキシ)を用意してインスタンスの生成やアクセス制限をコントロールする | |
| 13 | 振る舞いに関する パターン |
Chain of Responsibility (チェイン・オブ・レスポンシビリティ) |
処理を順番にたらいまわす |
| 14 | Command(コマンド) | 命令そのものをオブジェクトとして扱う | |
| 15 | Interpreter(インタプリタ) | 構文解析の結果を表現するクラスを定義する | |
| 16 | Iterator(イテレータ) | 複数のオブジェクトに順番にアクセスする | |
| 17 | Mediator(メディエータ) | 複数のオブジェクトを集中管理する | |
| 18 | Memento(メメント) | オブジェクトの状態を保管して復元可能にする | |
| 19 | Observer(オブザーバ) | オブジェクトの状態変化を通知する | |
| 20 | State(ステート) | 状態に応じて処理内容を切り替える | |
| 21 | Strategy(ストラテジ) | アルゴリズムを交換可能にする | |
| 22 | Template Method (テンプレートメソッド) |
一連の処理の一部をサブクラスで実装し、変更可能とする | |
| 23 | Visitor(ビジタ) | 複数のオブジェクトを渡り歩く処理を追加・変更する |
| 種別 | パターン名 | 目的 |
|---|---|---|
| プレゼンテーション層のパターン | ViewHelper(ビューヘルパ) | ビューからロジックを分離する |
| ビジネス層のパターン | Session Facade (セッションファサード) |
ビジネスロジックの複雑さを隠して、 シンプルな入り口を作る |
| インテグレーション層のパターン | Dao(Data Access Object) | データアクセスを抽象化する |