【読書メモ】実践ドメイン駆動設計 ~第6章~ 「値オブジェクト」
前回 【読書メモ】実践ドメイン駆動設計 ~第5章~ 「エンティティ」
計測・定量化・説明を表現する。
例えば、数字・文字列・日付・時刻、氏名、電話番号など。 以下の特徴に合致する際、値オブジェクトとしてモデリングする。 例)
年齢: 誕生からどれだけ生きてきたのかを計測し、定量化した値。 状態が不変である。(不変性) 組み合わせることで、概念的な統一体を形成する。(概念的な統一体) 例)
お金:「額」と「通貨」という属性が組み合わさったもの。 例)
通貨の額を変えたい時、新しい「お金」オブジェクトを生成する。 値オブジェクトが持つ各属性全ての値が同じか、を判定できること。 どのような状態で何度呼び出しても、オブジェクトの状態が変わらない操作。 値オブジェクトを利用することで、下流のコンテキスト側に存在するモデルが管理するプロパティを最小限にすることができる。その結果、複数の境界づけられたコンテキスト間の結合を緩やかにすることができる。 例) 「実践ドメイン駆動設計」から学ぶDDDの実装入門 (WINGSプロジェクト 青木淳夫 著) 以上What is 「値オブジェクト」
値オブジェクトのモデリング
「100」と「ドル」という個別では意味を持たないものが、「100ドル」となり完結した意味を持つ。
コンテキスト間の結合をミニマムにする
コラボレーションコンテキストの中に、Moderatorが値オブジェクトとして存在。
コラボレーションコンテキストが腐敗防止層から認証・アクセスコンテキストに問い合わせる。
ユーザがモデレータロールを付与されている時、Moderatorオブジェクトを生成する。
参考