GoFのデザインパターン

1.概要

 オブジェクト指向開発のためのパターン
   生成,構造,振る舞いの三つのカテゴリに分類される

 Gang of Fourと呼ばれる4名によって設計されたデザインパターン
   全部で23種類

2.3つのカテゴリー

 生成カテゴリー
   オブジェクトの生成に関する5パターン

Singleton特定のクラスのインスタンスが一つだけ存在することを保証し、グローバルなアクセスを提供します
Factory Methodサブクラスがインスタンス生成のプロセスをオーバーライドすることを可能にし、柔軟なオブジェクト生成を実現します
Abstract Factory関連するオブジェクトのファミリーを生成するためのインターフェースを提供し、具体的なクラスに依存しない設計を可能にします
Builder複雑なオブジェクトの生成を段階的に行うためのパターンです
Prototype既存のオブジェクトをコピーして新しいオブジェクトを生成します


 構造カテゴリーの7パターン
   オブジェクト間の関係を定義し、効率的な構造を提供する7パターン

Adapter異なるインターフェースを持つオブジェクト間の互換性を提供し、既存のクラスを変更せずに再利用します
Facade複雑なシステムへの簡単なインターフェースを提供し、使用の容易さを向上させます
Bridge抽象化と実装を分離することで、独立して変化させることが可能になります
Compositeオブジェクトをツリー構造で表現し、部分-全体の階層を管理します
Decorator既存のオブジェクトに新しい機能を追加するためのパターンで、オブジェクトの拡張性を高めます
Flyweight多数のオブジェクトを効率的に管理するためのパターンです
Proxy別のオブジェクトへのアクセスを制御します


 振る舞いカテゴリの11パターン
   オブジェクト間のコミュニケーションと責任の分配に関する11パターン

Visitorオブジェクトの構造を変更せずに新しい操作を追加するためのパターンです
Iteratorコレクション内の要素を順番にアクセスするためのインターフェースを提供し、コレクションの内容を簡単かつ一貫した方法で走査できるようにする
Stateオブジェクトの内部状態に基づいて振る舞いを変えるパターンです
Strategyアルゴリズムをカプセル化し、交換可能にするパターンで、柔軟な設計を実現します
Template Method操作のスケルトンを定義し、具体的なステップをサブクラスに委譲します
Chain of Responsibilityリクエストを処理するための一連のオブジェクトを持ち、リクエストが処理されるまでチェーンをたどります
Command操作をオブジェクトとしてカプセル化し、リクエストのパラメータ化や操作のキューイングを可能にします
Interpretor言語の文法を解析し、構文ツリーに基づいて文や式を評価するためのパターンです
Mediatorオブジェクト間の通信を管理し、複雑な依存関係を解消します
Mementオブジェクトの状態を保存し、後でその状態を復元するためのパターンです
Observeあるオブジェクトの状態変化を他のオブジェクトに通知するパターンで、イベント駆動型プログラムに適しています