CTS-KB

RDD

あーるでぃーでぃー

Responsibility-Driven Design 責務駆動設計
#設計原則 #オブジェクト指向 #DDD

オブジェクトの「責務(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 のサービスプログラムも、ドメインごとに責務を分離した設計になっている。

関連用語