Tech Blog

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

デザインパターンのエッセンス~振る舞いパターン~

デザインパターンの解説は数多あるけれど、そもそも例が複雑で分かりにくい!というわけで、UML1枚のみでシンプルに説明するシリーズ第3弾(最終回)。
生成に関するパターン構造に関するパターンに引き続き、今回は振る舞いに関する11個のパターン。

13. Chain of Responsibilityパターン

  • 責任をたらい回しを行うパターン。
  • イベントの送受信を行う複数のオブジェクトを鎖状につなぎ、それらの間をイベントが渡されてゆくようにする。

f:id:tkdmah:20130609114651p:plain

14. Commandパターン

  • 命令をメソッドではなく命令を表すクラスのインスタンスという1個の「もの」として表現するパターン。
  • 複数の異なる操作について、それぞれに対応するオブジェクトを用意し、オブジェクトを切り替えることで操作の切替えを実現する。

f:id:tkdmah:20130609114703p:plain

15. Interpreterパターン

  • プログラムが解決しようとしている問題を簡単なミニ言語で表現し、通訳プログラムが解釈・実行するパターン。
  • 構文解析のために、文法規則を反映するクラス構造を作る。

f:id:tkdmah:20130609114734p:plain

16. Iteratorパターン

  • 集合を順番に指し示して全体をスキャンするパターン。
  • 複数の要素を内包するオブジェクトのすべての要素に順にアクセスする方法を提供する。反復子。

f:id:tkdmah:20130609114753p:plain

17. Mediatorパターン

  • オブジェクト同士がすべて相談役を介してやりとりするパターン。
  • オブジェクト間の相互作用を仲介するオブジェクトを定義し、オブジェクト間の結合度を低くする。

f:id:tkdmah:20130609114811p:plain

18. Mementoパターン

  • インスタンスの状態を表す役割を導入し、カプセル化の破壊に陥ることなく保存と復元を行うパターン。
  • データ構造に対する一連の操作のそれぞれを記録しておき、以前の状態の復帰または操作の再現が行えるようにする。

f:id:tkdmah:20130609114825p:plain

19. Observerパターン

  • 観察対象の状態変化に対して、観察者に通知されるパターン。Listenerとも呼ばれる。
  • インスタンスの変化を他のインスタンスから監視できるようにする。

f:id:tkdmah:20130609114843p:plain

20. Stateパターン

  • 状態をクラスで表現するパターン。
  • オブジェクトの状態を変化させることで、処理内容を変えられるようにする。

f:id:tkdmah:20130609114857p:plain

21. Strategyパターン

  • 問題を解くアルゴリズムを容易に交換するパターン。
  • データ構造に対して適用する一連のアルゴリズムをカプセル化し、アルゴリズムの切替えを容易にする。

f:id:tkdmah:20130609114911p:plain

22. Template Methodパターン

  • スーパークラスで処理の枠組みを定め、サブクラスでその具体的内容を定めるパターン。
  • あるアルゴリズムの途中経過で必要な処理を抽象メソッドに委ね、その実装を変えることで処理が変えられるようにする。

f:id:tkdmah:20130609114923p:plain

23. Visitorパターン

  • データ構造の中をめぐり歩く訪問者のクラスを用意し、そのクラスが処理を行うパターン。
  • データ構造を保持するクラスと、それに対して処理を行うクラスを分離する。

f:id:tkdmah:20130609114935p:plain