领域模型还是领域对象?- 定义

3
如果我说错了,请纠正我。
我们可以使用域模型来表示:
a) MVC结构的M部分,该M部分应用了领域驱动设计模式。
b) 以某种方式方案的实体、属性和关系。也可以代表MVC中的M部分,但在这种情况下,不管使用的是什么模式。
c) 领域模型设计模式,其中“领域模型创建了一个相互连接的对象网络”。
d) 作为域对象(例如,关于某个领域的MVC模型上的对象)。
我们能否说d)与b)相同?
非常感谢。
2个回答

5
短答案:不,它们不是相同的。
域对象实际上是...(已删除)。请看@meze的评论,里面有一个链接。
这部分内容“实体、它们的属性和关系的方案”与数据结构有点相关。但是你的域对象不应该知道它们被存储或者甚至存在存储的事实。这是数据访问层的责任。
而域模型是操纵不同类型和数量的域对象的总体结构。

1
为什么领域对象是值对象?领域对象“应该知道如何维护业务逻辑”,“能够自我识别”。 - meze
我有一个答案是肯定的...另一个答案是否定的。你能同意吗?这样我们就可以得到一个清晰的答案。 :) - MEM
1
这里是我喜欢用来区分的例子:领域模型是图书馆,领域对象是书籍读者,数据访问层是图书管理员 - tereško
1
因此,我们可以说书籍和读者是图书馆的一部分,但它们并不一定是图书馆。为了成为图书馆,我们需要:书籍、读者和图书管理员。因此,我们永远不会出现领域对象恰好是领域模型的情况。 - MEM
2
如果您以可持续的方式进行,那么这是没有问题的。这种分离的重点在于将业务逻辑与数据库逻辑解耦。您可以编写一个实际上是领域对象+数据访问层的领域模型。这就是 ActiveRecord 模式,但它与数据库紧密耦合,代码很难测试。 - tereško
显示剩余2条评论

3
域对象是域模型的一个元素。域对象是

尽管@teresko指出,我们也可以说(提供其他定义),在那些领域对象是领域模型的一个元素的情况下,领域模型就是领域对象?但也许在这里我们不是在真正的“是”关系上...而更多地是在“有”的关系上。有趣。这让我想起了“有一个”/“是一个”关系。 - MEM
1
@MEM,类和对象是面向对象编程的元素。但我们不能说类和对象就是面向对象编程;p - meze

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接