DDD
ドメイン駆動設計

ちょっとずつ読むドメイン駆動設計 第ニ部 モデル駆動設計の構成要素 第七章 言語を使用する:応用例3

More than 1 year has passed since last update.

その1 / その2 の続きです。(風邪やら出張やらなんやらで久々の投稿><;)

リポジトリを選択する

リポジトリその1 / その2 / その3 / その4

リポジトリは集約が持つことができるが、その中で実際にもつものを決めるためには、

アプリケーションの要求に立ち返らなければならない(第二部第七章より)

書籍の例では、予約アプリケーションで予約を取るために、荷受人、荷送人などの役割を選択する必要があり、顧客リポジトリが必要になる。。。など

シナリオをウォークスルーする

その1その2、今回と見てきた内容を決定をチェックするためにシナリオを確認する。

ユースケースや、ユーザーストーリを確認しながら、エンティティ・値オブジェクトの選択などが問題ないか見ていきます。

オブジェクトの生成

ファクトリその1/その2/その3

ここでは、荷役イベントを抽象クラスにして、荷積みイベント・荷下ろしイベントなどの各イベントごとに実装クラスを作る例が上げられている。

また、循環参照などの解消の仕方などもあるのが参考になりますね。

モジュール

ここでは、モジュールの悪い例として、「エンティティモジュール」「値オブジェクトモジュール」とかに分けてしまう例が挙げられています。

ではなく、「顧客モジュール」「請求モジュール」「輸送モジュール」というドメインの概念に基づいたモジュールに分ける事が大事。
そうすることによって

「顧客」への「輸送」を行っており、したがって「請求」できる。営業販売の担当社員が「顧客」に対応して、合意を取り付ける。営業部門が「輸送」を行い、・・・

といったストーリーを語ることができる

明日に続きます。