その1 / その2 の続きです。(風邪やら出張やらなんやらで久々の投稿><;)
リポジトリを選択する
リポジトリは集約が持つことができるが、その中で実際にもつものを決めるためには、
アプリケーションの要求に立ち返らなければならない(第二部第七章より)
書籍の例では、予約アプリケーションで予約を取るために、荷受人、荷送人などの役割を選択する必要があり、顧客リポジトリが必要になる。。。など
シナリオをウォークスルーする
その1、 その2、今回と見てきた内容を決定をチェックするためにシナリオを確認する。
ユースケースや、ユーザーストーリを確認しながら、エンティティ・値オブジェクトの選択などが問題ないか見ていきます。
オブジェクトの生成
ここでは、荷役イベントを抽象クラスにして、荷積みイベント・荷下ろしイベントなどの各イベントごとに実装クラスを作る例が上げられている。
また、循環参照などの解消の仕方などもあるのが参考になりますね。
モジュール
ここでは、モジュールの悪い例として、「エンティティモジュール」「値オブジェクトモジュール」とかに分けてしまう例が挙げられています。
ではなく、「顧客モジュール」「請求モジュール」「輸送モジュール」というドメインの概念に基づいたモジュールに分ける事が大事。
そうすることによって
「顧客」への「輸送」を行っており、したがって「請求」できる。営業販売の担当社員が「顧客」に対応して、合意を取り付ける。営業部門が「輸送」を行い、・・・
といったストーリーを語ることができる
明日に続きます。