DDDを見ると、データベースを操作するさまざまなモデルに抽象化し、モデルが存在するリポジトリとして見ています。次に、その上にデータレイヤーとサービス/ビジネスレイヤーを追加します。私の質問は、そうすることで、脂肪モデルを構築することによってデータ転送の非効率性を生み出しているのでしょうか?
たとえば、顧客の請求書を画面に表示するシステムがあるとします。OOPの観点から考えると、おそらく次のようなオブジェクトになります。
class Invoice {
Customer _customer;
OrderItems _orderitems;
ShippingInfo _shippingInfo;
}
class Customer {
string name;
int customerID;
Address customerAddress;
AccountingInfo accountingInfo;
ShoppingHistory customerHistory;
}
(for the sake of the question/argument,
let's say it was determined that the customer class had to
implement AccountingInfo and ShoppingHistory)
請求書に顧客名のみを印刷する必要がある場合、他のすべての手荷物を一緒に運ぶのはなぜですか?リポジトリタイプのアプローチを使用すると、これらすべてのリソース(CPU、メモリ、複雑なクエリ結合など)を必要とするこれらの複雑なドメインオブジェクトを構築し、それをチューブを介してクライアントに転送するように見えます。
単にcustomerNameプロパティを請求書クラスに追加することは、抽象化から脱却し、恐ろしい慣習のように思えます。一方、Customerのようなオブジェクトを半分埋めるのは、同じオブジェクトの複数のバージョンを作成する可能性があるため、非常に悪い考えのように思われます(たとえば、Addressはあるが、ShoppingHistoryはないもの、AccountingInfoはあるが住所等)。何が欠けているのか、理解していないのですか?