在阅读了有关此反模式及其在SO上的许多关注之后,再次感到困惑。
如果我有一个域模型并捕获了必须保留在数据传输对象中的数据,那是否会使我的域模型成为数据的包装器?在那种情况下,我将使用贫血领域模型。但是,如果我在该包装器上添加了足够的域逻辑,那么它将在什么时候成为真正的域模型?
我的印象是,捕获必须在域模型中保留的内容违反了良好实践,并创建了贫血的域模型反模式。但是,如果您使用关系数据库,则无法避免选择导致对象状态的部分并将其保存。
由于我对概念非常困惑,因此我不确定所写的内容是否有意义。随时要求澄清。
最佳答案
当它包含构成业务域的所有(或大部分)行为时,它就变成了“真实”域模型(请注意,我强调的是业务逻辑,而不是UI或其他正交问题)。
如果您使用的是无处不在的语言,并且从您的领域专家那里得到不断的反馈,您就会知道自己走在正确的道路上(专家在看到您的领域模型时应该点头)。如果您没有做这些事情,那么您就没有做DDD(Eric Evans speak about it)。
DTO的要点:不要忽略它们。从实现的角度来看,您将需要它们在层/层之间传递数据。如何将DTO和真正的域对象结合在一起,实际上取决于您所使用的技术。
就像在先前的答案中提到的那样,也许您对数据和持久性的关注使您无法进行真正的域建模……