ドメインオブジェクトへの業務ロジック集約
定義
業務に関するロジック(計算・判断・状態遷移)を、データを保持するドメインオブジェクト自身に持たせる設計方針。 サービス層やコントローラーに業務ロジックが漏れ出す「ドメインモデル貧血症(Anemic Domain Model)」を避ける。
なぜ重要か
- ロジックがドメインオブジェクトに集まると、関連する変更が1箇所に収まる
- サービス層がデータの受け渡しに徹することで、ユースケース記述が読みやすくなる
- 業務の変化に対してどこを修正すればよいかが明確になる
適用場面
- 「この計算はどこに書くべきか」と迷ったとき:計算の対象となるデータを持つオブジェクトに書く
- サービスクラスが肥大化し、同じようなデータ操作が繰り返されているとき
関連概念
- 三層分離パターン
- 薄いサービス層パターン
- Functional Core, Imperative Shell(関数型でも同じ思想)
出典
現場で役立つシステム設計の原則(増田亨)第3〜4章