Tech Blog

Information Technology / Machine Learning / Data Analysis / Big Data / System Integration

デザインパターンのエッセンス~構造パターン~

デザインパターンの解説は数多あるけれど、そもそも例が複雑で分かりにくい!というわけで、UML1枚のみでシンプルに説明するシリーズ第2弾。
今回は、構造に関する7つのパターン。生成に関するパターンはこちら

6. Adapter

  • すでに提供されているものと必要なもののずれを埋めるデザインパターン。Wrapperパターンとも呼ばれる。
  • 元々関連性のない2つのクラスを接続するクラスを作る。
  • 継承を用いる方法

f:id:tkdmah:20130528015120p:plain

  • 委譲を用いる方法

f:id:tkdmah:20130528015131p:plain

7. Bridge

  • 機能のクラス階層と実装のクラス階層を橋渡しをするデザインパターン
  • クラスなどの実装と、呼出し側の間の橋渡しをするクラスを用意し、実装を隠蔽する。

f:id:tkdmah:20130528015143p:plain

8. Composite

  • 容器と中身を同一視し、再帰的な構造を作るパターン。
  • 再帰的な構造を表現する。

f:id:tkdmah:20130528015159p:plain

9. Decorator

  • オブジェクトにデコレーションをほどこしていくパターン。Filterとも呼ばれる。
  • あるインスタンスに対し、動的に付加機能を追加する。

f:id:tkdmah:20130528015209p:plain

10. Facade

  • 複雑なクラス構成をまとめてシンプルなAPIを提供するパターン。
  • 複数のサブシステムの窓口となる共通のインタフェースを提供する。

f:id:tkdmah:20130528015222p:plain

11. Flyweight

f:id:tkdmah:20130528015234p:plain

12. Proxy

  • 代理人を立てるパターン。
  • 共通のインタフェースをもつインスタンスを内包し、利用者からのアクセスを代理する。

f:id:tkdmah:20130528015247p:plain