『オブジェクトデザイン』読書メモ:第 6 章「制御スタイル」
これまでの分(第 1 〜 5 章)はこちら。
- 『オブジェクトデザイン』読書メモ:第 1 章「設計概念」
- 『オブジェクトデザイン』読書メモ:第 2 章「責務駆動設計」
- 『オブジェクトデザイン』読書メモ:第 3 章「オブジェクトを見つける」
- 『オブジェクトデザイン』読書メモ:第 4 章「責務」
- 『オブジェクトデザイン』読書メモ:第 5 章「コラボレーション」
この第 6 章で責務駆動設計概説編は終了。最後は各オブジェクトのコラボレーションに必要な制御オブジェクトの設計方法についてです。
6 制御スタイル
制御スタイルとは
- 制御オブジェクト(制御役/調整役)によるコラボレーション実現方法
- 制御スタイルの 3 タイプ
- 集中型:単一の制御用オブジェクトにすべての判断を実行
- 委譲型:下位責務を別オブジェクトに持たせ、そのオブジェクトも判断を実行
- 分散型:全オブジェクトに判断と処理を分配(あまり使われない?)
制御スタイルの良し悪し
集中型
- 利点
- 制御ロジック存在場所のわかりやすさ
- 欠点
- 制御ロジックの複雑化
- 制御役オブジェクトを通じた周辺オブジェクトの密結合化
判断が少ない単一タスクを実行する場合に向いている。
委譲型
- 利点
- 各オブジェクトの疎結合化
- 制御役と他オブジェクト間のコラボレーションの高レベル化
- 例:細切れ情報の受け渡しではなく、より粒度の大きな処理のリクエストとなる
- 設計作業の分担の簡単化
- 欠点
- 過度のオブジェクト分割による複雑でわかりにくいコラボレーション
制御処理を場合によってどれを利用するか異なる下位責務に分割できるときに向いている。
GoF の State パターンが委譲型制御の一例。
設計上の注意点
- 一つのアプリケーションの中で異なる制御スタイルが存在しうる
- タスクに応じた制御スタイル(集中/委譲)を選択
- 類似したユースケースに対しては類似した制御スタイルで