在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但沒有地址等等)。我錯過了什麼,或者沒有理解?
好點。我想我一定還沒有完全理解延遲加載>。< – MunkiPhD 2009-07-18 20:10:13