応用例が面白い!
構成要素をすべて紹介したうえで、第七章はその応用例の提示となります。
設計・実装の順番やリファクタリングをしたり、新機能を追加したりと結構ありそうなプロジェクトっぽい感じで面白いし参考になりました。
ユビキタス言語の整理
貨物輸送システムの例でまずは、用語の整理。見てきたとおり、用語集を作るとかそんなではなく、ドメインの知識を体系化したモデルを書きながらの整理となっています。
気になったのは、[貨物]と[顧客]の関連。
[顧客]にはさまざまな役割がいます。「荷送人」「荷受人」「支払人」など。
なので、[貨物]と[顧客]の関連は「多対多」なのですが、[顧客]の役割を限定することで、多対1に絞っている。詳しくはこちら。
ドメインを隔離する:アプリケーションの導入
ここで、アプリケーション層について、検討しておく。
アプリケーション層だけ、結構初期に検討するんだと思いました。
考えなしに設計すると、単純に集約の名前をそのままサービス名として使用するような感じになってしまうが、ここでアプリケーションのことを独立して考えることで、もっと業務の言葉をつかったサービス名が思い浮かびそう。
深く分析しなくても、ユーザーレベルのアプリケーション機能を識別して・・・(第二部第七章より)
まずは、軽くでもアプリケーションの機能を考える。
例では、追跡問い合わせ、予約アプリケーション、イベント記録アプリケーションが出てきている。
エンティティと値オブジェクトを区別する
ここは、もう見てきたとおりです。追跡したい同一性があるかどうかや、値かどうかを区別していきます。
明日も続きを読んでいきます。