EF代码首先使用DDD和LoD

时间:2015-06-02 13:30:09

标签: domain-driven-design law-of-demeter

我想设计DDD之后的模型。域中有两个实体:Tank和Catalog。目录是一个弱势实体,其生活方式取决于其所有者:坦克(坦克很强,目录很弱)。我也希望观察德米特定律。所以我的最终设计如下:

public class Catalog
{
        public int Id { get; private set; }

        public DateTime PublishTime { get; private set; }

        private Catalog()
        {
        }
        private void SetPublishTime(DateTime dt)
        {
            PublishTime = dt;
        }
        public class Tank
        {
            public int Id { get; set; }

            public int Quantity { get; set; }

            private ICollection<Catalog> Catalogs { get; set; }

            public Catalog AddCatalog()
            {
                Catalog cat = new Catalog();

                cat.SetPublishTime(DateTime.Now);
                Catalogs.Add(cat);

                return cat;
            }
        }
}

因此,样本用法如下:

Catalog.Tank t = new Catalog.Tank();
Catalog cat = t.AddCatalog();
t.SetPublishTime(cat, DateTime.Now);

问题: 要仅通过Tank(强实体)限制对Catalog(弱实体)的访问,应该在Catalog类中定义Tank类!某种程度上是反向行动!

问题:这是设计模型的正确方法吗?有没有更好的方法来解决我提到的问题?

0 个答案:

没有答案