3
如果我設計了一個像下面這樣的AR,你認爲我應該去說更新一個訂單行對象中的一個屬性嗎?對一個聚合根內的實體的操作
對於實施例如何可以改變標題爲我的訂單線中的一個(例如問題)
這是高階聚集體根
public class Order
{
private readonly int id;
private readonly Customer customer; // Customer is another Aggregate
private readonly IList<OrderLine> orderLines;
private readonly IOrderLineFactory orderLineFactory;
public Order(int id, Customer customer, IOrderLineFactory orderLineFactory)
{
this.id = id;
this.customer = customer;
this.orderLines = new List<OrderLine>();
this.orderLineFactory = orderLineFactory;
}
public void AddOrderLine(Item item, int quantity)
{
OrderLine orderLine = orderLineFactory.Create(this, item, quantity);
orderLines.Add(orderLine);
}
}
這種方法會不會導致AR暴露的接口膨脹?它需要通過自己的接口來暴露所有實體的行爲。另外假設該訂單行有一組需要更新的標籤。我們會像order.changeTagTitle(orderLineId,tagId,「New title」); ? – Sudarshan 2012-07-31 02:10:33
@Sudarshan:是的,它會膨脹界面。但大多數情況下,總量相對較小,並且總量上不相關的方法數量不會很大。這是DDD的一個缺點。 – Jeroen 2012-07-31 09:58:59
如何設計優雅的聚合根接口?因爲如果一個AR甚至只有2個實體,並且每個實體都需要暴露2個行爲,則每個AR將有4個行爲來暴露,而不是它自己的行爲 – Sudarshan 2012-08-15 14:12:53