【问题标题】:DDD element: Aggregates in c#DDD 元素:c# 中的聚合
【发布时间】:2010-01-07 20:30:29
【问题描述】:

在分析领域对象的生命周期时,聚合是对象分组的基本元素。 我在 C# 中实现聚合时遇到问题。

一个包含几个类的简短示例将非常有帮助。 或有关此主题的任何链接。

【问题讨论】:

    标签: c# domain-driven-design aggregate


    【解决方案1】:
    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也有一篇好文章。

    【讨论】:

      【解决方案2】:

      您应该查看Udi Dahans 博客和Greg Youngs 博客。那里有很多关于 DDD 和 CQRS 的好东西。可以在 Yahoo Doman Driven Design group 找到很多好的问题和答案。我知道我没有链接到特定示例,但是如果您查看此链接,您会发现很多材料和示例。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-25
        • 2016-03-21
        • 1970-01-01
        • 1970-01-01
        • 2011-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多