GoFデザインパターンの特徴を一言で表してみる

Creational Patterns(生成に関するパターン)

Abstract Factory

整合性を必要とする一連のオブジェクト群を、間違いなく生成したいとき、関連するオブジェクトをConcreteクラスを意識せずに、まとめて生成するインターフェースを提供する
【デザインパターン】Abstract Factory - 緑茶思考ブログ

Builder

あるオブジェクトの建築過程(construction process)と表現方法(representation)を分離することで、柔軟に変更できるソフトを目指す
【デザインパターン】Builder - 緑茶思考ブログ

Factory Method

インスタンスの生成をサブクラスに行わせることで、より柔軟に生成するインスタンスを選択する。
【デザインパターン】Factory Method - 緑茶思考ブログ

Prototype

一度作成したインスタンスをデータベースに記憶しておき,適宜呼び出してインスタンスのコピー元として使う
【デザインパターン】Prototype - 緑茶思考ブログ

Singleton

あるクラスのインスタンスが一つしかないことを保証する
【デザインパターン】Singleton - 緑茶思考ブログ

Structural Patterns(構造に関するパターン)

Adapter

あるクラスのインターフェースを、別のインターフェースへ変換する
【デザインパターン】Adapter - 緑茶思考ブログ

Bridge

あるクラスにおける機能追加と機能実装の2つの継承を分離し、それらを独立して管理する
【デザインパターン】Bridge - 緑茶思考ブログ

Composite

【デザインパターン】Composite - 緑茶思考ブログ
「容器」と「中身」を同一視することができ、再帰的な構造の取扱いを容易にする

Decorator

既存のオブジェクトに新しい機能や振る舞いを動的に追加する
【デザインパターン】Decorator - 緑茶思考ブログ

Facade

サブシステムのインターフェースを一つのインターフェースにまとめる
【デザインパターン】Facade - 緑茶思考ブログ

Flyweight

生成済みのオブジェクトをできるだけ再利用し、無駄なオブジェクト生成を防ぐ
【デザインパターン】Flyweight - 緑茶思考ブログ

Proxy

別のクラスのオブジェクトがアクセスできるように代理のクラスを提供する
【デザインパターン】Proxy - 緑茶思考ブログ

Behavioral Patterns(振る舞いに関するパターン)

Chain of Responsibility

受け取り手を繋いで、その連結順に要求を受け渡していく
【デザインパターン】Chain of Responsibility - 緑茶思考ブログ

Command

要求自体をオブジェクトにしてしまい、そのオブジェクトを引数に渡す
【デザインパターン】Command - 緑茶思考ブログ

Interpreter

文法規則をクラスで表現したものを用い構文解析し、その結果に基づき処理を実行していく機能を提供する

Iterator

集約オブジェクトを内包するオブジェクトが内部表現を公開することなく、その要素に順にアクセスする方法を提供する。

Mediator

複雑に絡みあった複数のオブジェクト間の関係を、必ず仲介者を介して処理を行うようにすることで、単純かつ明快なインターフェースを提供する。
【デザインパターン】Mediator - 緑茶思考ブログ

Memento

あるオブジェクトの任意の時点の状態を保存しておき、後でその状態にオブジェクトを戻す
【デザインパターン】Memento - 緑茶思考ブログ

Observer

一つのオブジェクトの状態が変わったら、依存関係にあるオブジェクトへ通知される
【デザインパターン】Observer - 緑茶思考ブログ
【C言語によるデザインパターン】Observer - 緑茶思考ブログ

State

状態が変わったときに、オブジェクトの振る舞いが変わるようにする。
それぞれの状態をクラスで表現する。
【デザインパターン】State - 緑茶思考ブログ

Template Method

処理手順をスーパークラスで書いておき、差異となる処理部分を子クラスに実装させる。
【デザインパターン】Template Method - 緑茶思考ブログ
【C言語によるデザインパターン】Template Method - 緑茶思考ブログ

Visitor

既存オブジェクトに対する新たな操作を、構造を変化させずに追加できる
【デザインパターン】Visitor - 緑茶思考ブログ