在处理事件时,人们通常会以仅由基元组成的非常简单的值对象为例。
但是,如果我需要更多信息,该怎么办?是否允许创建特定的结构来处理这些情况?

namespace Events {
    public class BlueTrainCleaned
    {
         Datetime start
         Datetime end
         Carriage[] Carriages
    }

    public class Carriage
    {
         string Descrizione
         int Quantity
    }
}


Carriage类是事件名称空间的一部分,没有任何复杂的逻辑或任何内容。

但是如果我还有其他事件:

public class RedTrainCleaned
{
     Datetime start
     Datetime end
     Carriage[] Carriages
}


运输也将成为第二个事件的界面的一部分。如果假设有40个事件或50个事件具有相同的“事件值对象”,则意味着我的项目将在该对象上大量耦合。它对我来说看起来不太好,但是我应该怎么做才能避免这种情况?是否警告我,我的域分析工作做得不好?

谢谢你的帮助,

最佳答案

我想这取决于您的域中标准Carriage的程度。如果一个事件改变了,其他事件也改变了吗?

我想我想到了Address的示例。在域内这是非常标准的,如果我要引发包含地址信息的事件,我认为将其包括在事件对象中是有意义的。这样,如果知道我们的邮政编码需要ZIP + 4扩展名,则可以在Address类中添加一个新字段,并使该属性可用于将来的事件。我可以在一个地方进行更改,并将其用于将来的事件。

如果Carriage在不同事件中可能意味着不同,那么也许您不应该包含它-而是在事件中将其弄平。但是,如果Carriage在您的域中确实是一个普遍存在的定义,那么我认为可以将其包含在事件类中。

尽管听起来令人沮丧,但我认为这确实是“取决于”的。

我希望这有帮助。祝好运!!

07-24 09:37
查看更多