逆引き
データ操作
データ取得
| 配列、リスト、スタックのデータを順次とりだす | Iterator |
| 木構造を処理する | Composite Interpreter |
処理方法の変更
| 内容と表現方法を別クラスに分離する | Builder |
| どの処理パターンなのか事前に判断できない | Chain of Responsibility |
インスタンス生成
生成
| 自動生成する | Factory Method |
| 簡単に生成する | Builder |
制限
| インスタンス数を制限する | Singleton |
インスタンス利用
インスタンスの保存
| 現在のインスタンスの状態を残す、あるいは別に利用する | Prototype |
| ある時点のオブジェクト情報を残す | Memento |
| 履歴を残して同じ作業をする | Command |
オブジェクト間
| 他のオブジェクトの状態変化を知る | Observer |
| オブジェクト間の関連が複雑になりすぎる | Mediator |
| インターフェースなどの違う同機能のクラスを使う | Adapter |
| オブジェクトの集合全体を処理する | Visitor |
| どの処理パターンなのか事前に判断できない | Chain of Responsibility |
ロジック変更
動的
| 使用する処理手順を、動的に丸ごと入れ替える | Abstract Factory |
| 状態によって処理が分かれる | State |
設計変更
| 利用するアルゴリズムが変わる可能性がある | Factory Method |
| 実装の変更が考えられる | Bridge |
| アルゴリズムを簡単に交換できるようにしておきたい | Strategy |
| 既存のクラスに機能を追加していく | Decorator |
| 同じデータ構造に対して処理を取り替える | Visitor |
| 内容と表現方法を別クラスに分離する | Builder |
開発の容易さ
インターフェース
| インターフェースなどの違う同機能のクラスを使う | Adapter |
| オブジェクト間の関連が複雑すぎる | Mediator |
| APIなどの呼び出しが複雑なので簡単にする | Façade |
| 一連の命令をひとつの新しい命令とする | Command |
アルゴリズムの変更
| 利用するアルゴリズムが変わる可能性がある | Factory Method |
| 実装の変更が考えられる | Bridge |
| アルゴリズムを簡単に交換できるようにしておきたい | Strategy |
| 同じデータ構造に対して処理を取り替える | Visitor |
| 内容と表現方法を別クラスに分離する | Builder |
| ロジックはほとんど同じだが少しずつ異なるクラスが多くある | Template Method |
| どの処理パターンなのか事前に判断できない | Chain of Responsibility |
機能の変更
| 既存のクラスに機能を追加する | Decorator |
バージョン管理
| バージョンの違う版を共存させる | Adapter |