『オブジェクトデザイン』読書メモ:第 5 章「コラボレーション」
これまでの分(第 1 〜 4 章)はこちら。
- 『オブジェクトデザイン』読書メモ:第 1 章「設計概念」
- 『オブジェクトデザイン』読書メモ:第 2 章「責務駆動設計」
- 『オブジェクトデザイン』読書メモ:第 3 章「オブジェクトを見つける」
- 『オブジェクトデザイン』読書メモ:第 4 章「責務」
5 コラボレーション
- 設計のゴール
- コラボレータ間で責務を配置すること
コラボレーションを識別する戦略
-
オブジェクトのステレオタイプから他のオブジェクトとのコラボレーションを決定
- 情報保持役
- 他のオブジェクトから参照
- 構造化役
- 他のオブジェクトを内部に保持し、互いに呼び出し
- サービス提供役
- サービス実行に利用する情報を他のオブジェクトから取得
- 制御役
- 条件判断にもとづいて他のオブジェクトへ処理を委譲
- 調整役
- 他のオブジェクトに処理を委譲
- インタフェース役
- 地域内の他のオブジェクトとのコラボレート
- 情報保持役
-
責務を深堀り
- 別の場所から取得する情報や受ける支援を発見し、他のオブジェクトとコラボレート
-
複雑な責務のブレイクダウン
- 下位の責務を新オブジェクトへ割り当ててコラボレート
-
ユースケースを形作るコラボレーション
- おおざっぱに設計して、局所的な地域を詳細に設計する
-
GoF のデザインパターン
- 一種のコラボレーション
コラボレーション設計時の問題と解決法
- 外部オブジェクトとの依存部分多
- Facade パターンで依存部分を限定
- 利用者側がパターンの決まった細かいメッセージ組送信多
- まとめた大きなメッセージを提供
- 条件チェックなど、メッセージを送るまでのハードル高
- Double Dispatch パターンで条件チェックの適切なオブジェクトへ責務を移動するなどの責務見直し