読者です 読者をやめる 読者になる 読者になる

『オブジェクトデザイン』読書メモ:第 6 章「制御スタイル」

これまでの分(第 1 〜 5 章)はこちら。

この第 6 章で責務駆動設計概説編は終了。最後は各オブジェクトのコラボレーションに必要な制御オブジェクトの設計方法についてです。

6 制御スタイル

制御スタイルとは

  • 制御オブジェクト(制御役/調整役)によるコラボレーション実現方法
  • 制御スタイルの 3 タイプ
    • 集中型:単一の制御用オブジェクトにすべての判断を実行
    • 委譲型:下位責務を別オブジェクトに持たせ、そのオブジェクトも判断を実行
    • 分散型:全オブジェクトに判断と処理を分配(あまり使われない?)

制御スタイルの良し悪し

集中型

  • 利点
    • 制御ロジック存在場所のわかりやすさ
  • 欠点
    • 制御ロジックの複雑化
    • 制御役オブジェクトを通じた周辺オブジェクトの密結合化

判断が少ない単一タスクを実行する場合に向いている。

委譲型

  • 利点
    • 各オブジェクトの疎結合
    • 制御役と他オブジェクト間のコラボレーションの高レベル化
      • 例:細切れ情報の受け渡しではなく、より粒度の大きな処理のリクエストとなる
    • 設計作業の分担の簡単化
  • 欠点
    • 過度のオブジェクト分割による複雑でわかりにくいコラボレーション

制御処理を場合によってどれを利用するか異なる下位責務に分割できるときに向いている。

GoF の State パターンが委譲型制御の一例。

設計上の注意点

  • 一つのアプリケーションの中で異なる制御スタイルが存在しうる
    • タスクに応じた制御スタイル(集中/委譲)を選択
  • 類似したユースケースに対しては類似した制御スタイルで

参考文献

オブジェクトデザイン (Object Oriented SELECTION)

オブジェクトデザイン (Object Oriented SELECTION)