sha*_*ake 2 c# domain-driven-design aggregate
在分析域对象的生命周期时,聚合是对象分组的基本元素.我在C#中实现aggregetes时遇到问题.
一个简短的例子,有几个类,会非常有帮助.或者这个主题的任何链接.
class Order {
public int OrderNumber { get; private set; }
public Address ShippingAddress { get; private set; }
public Address BillingAddress { get; private set; }
private readonly IList<OrderLine> OrderLines { get; private set; }
public void AddItem(Item item, int quantity) {
OrderLine orderLine = new OrderLine(item, quantity);
OrderLines.Add(orderLine);
}
// constructor etc.
}
class OrderLine {
public Item Item { get; private set; }
public int Quantity { get; private set; }
public OrderLine(Item item, int quantity) {
Item = item;
Quantity = quantity;
}
}
Run Code Online (Sandbox Code Playgroud)
在任何情况下,逻辑都不应OrderLine暴露在实例之外Order.这是aggegrate起源的重点.
有关.NET特定的参考,请参阅应用域驱动的设计和模式:使用C#和.NET中的示例.当然,这里的标准参考是域驱动设计:解决软件核心中的复杂性.MSDN上也有一篇很好的文章.