オブジェクトの「責務(Responsibility)」を中心に設計を進める手法。Rebecca Wirfs-Brock が 1990 年に提唱した。
概要
「このオブジェクトは何を知っているか(knowing)」「何をできるか(doing)」という問いからクラスの役割を決める。データ構造からではなく、振る舞いと責務からモデリングする点が特徴。
2 つの責務
| 種類 | 説明 | 例 |
|---|---|---|
| Knowing | 自身のデータ・関連オブジェクト・導出値を知っている | 口座が残高を知っている |
| Doing | 自身で計算・他オブジェクトへの委譲・制御を行う | 口座が出金可否を判定する |
CRC カード
RDD の代表的なモデリング手法。Class(クラス名)・Responsibilities(責務)・Collaborators(協力者)を索引カードに書き出して設計を議論する。
Account(口座)の CRC カード:
| 責務 | 協力者 |
|---|---|
| 残高を知っている | Transaction |
| 出金可否を判定する | |
| 入出金を記録する | AuditLog |
レガシーシステムとの関連
COBOL の 88 条件名(88 AC-IS-FROZEN VALUE "F".)は、データ項目に「自身の状態を知っている」責務を持たせる RDD 的な発想。RPG のサービスプログラムも、ドメインごとに責務を分離した設計になっている。
関連用語
- SoC(関心の分離) — RDD の基盤となる設計原則
- DRY — 責務の一元化と密接に関連