使用非建模递归股票系统

时间:2013-03-01 12:36:37

标签: domain-driven-design

我正在尝试建立一个生产股票的业务领域,该股票实际上具有复杂的递归股票系统。

  1. 可以在商品级别对商品进行唯一标注,或者;
  2. 库存可以在包装盒级别进行唯一标记(包含许多不可识别的商品),或者;
  3. 可以在托盘级别标记库存(包含许多不可识别的盒子),或者;
  4. 库存可以唯一标记,然后包含在上面的级别中,即唯一框中的唯一项目。或者将独特的物品直接放在独特的托盘上。
  5. 这就是我的想法,但是我不确定“QuantityOfUnidetifyableInners”,但我不知道有什么更好的方法可以建立一个可能或不可能唯一识别它的实体的系统,所以对此有任何建议不胜感激,或者如果有人能够找到解决问题的替代方法。

    /// <summary>
    /// ValueObject
    /// </summary>
    public sealed class StockIdentity
    {
        private readonly string _serial;
    
        public StockIdentity(string serial)
        {
            _serial = serial;
        }
    
        public string Serial { get { return _serial; } }
    
        //...equals contract
    }
    
    /// <summary>
    /// Entity
    /// </summary>
    public sealed class StockItem
    {
        public StockIdentity Id { get; set; }
        public int QuantityOfNonIdentifiableInners { get; set; }
        public StockItem[] Identifiable { get; set; }
    }
    

1 个答案:

答案 0 :(得分:1)

这是一个想法:你为什么需要这个数量?它是否在您的域模型中是必要的,还是只是属于您的读取模型的东西?

如果是的话,我会认为数量是你需要验证所有物品是否仍然存在的东西,所以我认为你会称之为

 ItemCount

我认为领域专家不会说“嘿,对于每个标签我们都有一定数量的不可识别的内容”,但可能会像“稍后,我们会计算物品以确保一切都在那里”。

领域专家往往非常 - 甚至过多 - 当他们知道他们的话会被用作实施软件的基线时,他们会发现他们所说的话,所以他们倾向于说得更正式。

当你提出一个附带问题时,他们通常会停止关注他们的正式语言,然后他们开始说出他们的“真正的”领域语言;它以非常微妙的方式发生,有时很难注意到,但这通常是价值所在的部分。

因人而异。