Customer
2 つの集約ルートとOrder
「共有」エンティティで構成されるモデルのシナリオを考えてみましょうAddress
。
また、 には次のサブクラスがあるAddress
ことに注意してください: 、および。abstract
PhysicalAddress
PostOfficeBoxAddress
PrivateBagAddress
Customer
は、ある種のアドレス帳に整理された多数のアドレスを持つことができます。注文時に、顧客はAddress
アドレス帳から配送先住所として使用する を選択します。
最初は 2 つのエンティティ間でアドレスを共有することを考えていましたが、それぞれの不変条件の管理に問題が生じるため、オプトアウトしました。
もう 1 つの選択肢として、 の 2 つの階層を作成しAddress
、それぞれを顧客の住所または配送先住所として使用する方法があります。繰り返しコードがたくさんあるので、これも正しくないようです。
この状況を適切にモデル化するにはどうすればよいでしょうか?