デザインパターンのエッセンス~振る舞いパターン~
デザインパターンの解説は数多あるけれど、そもそも例が複雑で分かりにくい!というわけで、UML1枚のみでシンプルに説明するシリーズ第3弾(最終回)。
生成に関するパターンと構造に関するパターンに引き続き、今回は振る舞いに関する11個のパターン。
13. Chain of Responsibilityパターン
- 責任をたらい回しを行うパターン。
- イベントの送受信を行う複数のオブジェクトを鎖状につなぎ、それらの間をイベントが渡されてゆくようにする。
14. Commandパターン
- 命令をメソッドではなく命令を表すクラスのインスタンスという1個の「もの」として表現するパターン。
- 複数の異なる操作について、それぞれに対応するオブジェクトを用意し、オブジェクトを切り替えることで操作の切替えを実現する。
17. Mediatorパターン
- オブジェクト同士がすべて相談役を介してやりとりするパターン。
- オブジェクト間の相互作用を仲介するオブジェクトを定義し、オブジェクト間の結合度を低くする。
18. Mementoパターン
- インスタンスの状態を表す役割を導入し、カプセル化の破壊に陥ることなく保存と復元を行うパターン。
- データ構造に対する一連の操作のそれぞれを記録しておき、以前の状態の復帰または操作の再現が行えるようにする。
20. Stateパターン
- 状態をクラスで表現するパターン。
- オブジェクトの状態を変化させることで、処理内容を変えられるようにする。
22. Template Methodパターン
- スーパークラスで処理の枠組みを定め、サブクラスでその具体的内容を定めるパターン。
- あるアルゴリズムの途中経過で必要な処理を抽象メソッドに委ね、その実装を変えることで処理が変えられるようにする。
23. Visitorパターン
- データ構造の中をめぐり歩く訪問者のクラスを用意し、そのクラスが処理を行うパターン。
- データ構造を保持するクラスと、それに対して処理を行うクラスを分離する。