考慮以下結構:Customer-> Orders-> OrderLines-> Quantity和Customer是聚合根。綜合根
假設我們想改變一個OrderLine的數量,我們將如何做到這一點?將客戶有這樣的方法:
public ChangeQuantity(Order order, OrderLine orderLine, int quantity)
{
order.OrderLines.First(...).Quantity = quantity;
}
或將落實情況:
public ChangeQuantity(Order order, OrderLine orderLine, int quantity)
{
order.ChangeQuantity(orderLine, quantity);
}
+1最後一句。 – Domenic 2012-02-23 15:44:21
我回應@ Domenic對最後一句話的讚美。但是,我懷疑有些人可能會錯過它的觀點。考慮一批「客戶」;你想檢索一個給定的客戶端,所以你的表達式是'clients.First(c => c.ID == client.ID)'。在大多數情況下,這個表達式會返回一個引用*給變量'client'!*所引用的同一個對象。所以不是像這樣的語句:'clients.First(c => c.ID == client.ID)。 UpdateAddress(newAddress);'你最好用這個:'client.UpdateAddress(newAddress);'。 BrokenGlass,如果我錯了,請糾正我。 – phoog 2012-02-23 15:56:04