在处理事件时,人们通常会以仅由基元组成的非常简单的值对象为例。
但是,如果我需要更多信息,该怎么办?是否允许创建特定的结构来处理这些情况?
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
在您的域中确实是一个普遍存在的定义,那么我认为可以将其包含在事件类中。
尽管听起来令人沮丧,但我认为这确实是“取决于”的。
我希望这有帮助。祝好运!!