【发布时间】:2010-01-07 20:30:29
【问题描述】:
在分析领域对象的生命周期时,聚合是对象分组的基本元素。 我在 C# 中实现聚合时遇到问题。
一个包含几个类的简短示例将非常有帮助。 或有关此主题的任何链接。
【问题讨论】:
标签: c# domain-driven-design aggregate
在分析领域对象的生命周期时,聚合是对象分组的基本元素。 我在 C# 中实现聚合时遇到问题。
一个包含几个类的简短示例将非常有帮助。 或有关此主题的任何链接。
【问题讨论】:
标签: c# domain-driven-design aggregate
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;
}
}
在任何时候都不应将涉及OrderLines 的逻辑暴露在Order 的实例之外。这就是聚合根的意义所在。
有关 .NET 特定参考,请参阅Applying Domain-Driven Design and Patterns: With Examples in C# and .NET。当然,这里的标准参考是Domain Driven Design: Tackling Complexity in the Heart of Software 。 MSDN也有一篇好文章。
【讨论】:
您应该查看Udi Dahans 博客和Greg Youngs 博客。那里有很多关于 DDD 和 CQRS 的好东西。可以在 Yahoo Doman Driven Design group 找到很多好的问题和答案。我知道我没有链接到特定示例,但是如果您查看此链接,您会发现很多材料和示例。
【讨论】: