【问题标题】:Domain Model or Domain Object ? - Definitions域模型或域对象? - 定义
【发布时间】:2011-08-17 17:26:09
【问题描述】:

如果我错了,请纠正我。

我们可以说Domain Model来表示:

a) MVC 结构的 M 部分,在 M 部分应用了领域驱动设计模式。

b) 实体、它们的属性和以某种方式的关系的方案。也可以表示 MVC 上的 M 部分,但在这种情况下,无论使用哪种模式。

c) 一种领域模型设计模式,其中“领域模型创建互连对象的网络”;

d) 作为域对象(例如,可以是我们的 MVC 模型上的某个对象);

我们可以说 d)b) 相同吗?

非常感谢。

【问题讨论】:

    标签: php oop zend-framework domain-model domain-object


    【解决方案1】:

    简短的回答:不,它们不一样。

    域对象实际上是(已删除) .. 看看@meze 的评论 .. 有一个链接。

    这部分“实体的方案,它们的属性和关系”有点与数据的结构有关。但是您的域对象不应该知道它们被存储甚至存在存储的事实。这是数据访问层的职责。

    域模型是操纵不同类型和数量的域对象的总体结构。

    【讨论】:

    • 为什么域对象是值对象? Domain Object“应该懂得维护业务逻辑”,“认清自己”。
    • @meze 是的......你的权利,我不应该将它们与价值对象进行比较。我想我想到了一个太简单的用例,这就是为什么“价值对象”似乎是一个很好的描述。我的错。
    • 这里是我喜欢用来区分的例子:领域模型是 library ,领域对象是 bookspatrons ,数据访问层是librarian
    • 所以我们可以说书籍和顾客是图书馆的一部分,但他们不一定是图书馆。为了成为图书馆,我们需要:书籍、顾客图书管理员。因此,我们永远不会遇到领域对象是(ipsis verbis)领域模型的情况。 - ?
    • 如果您以可持续的方式进行操作,则不会。这种分离的重点是将业务逻辑与数据库逻辑分离。您可以编写一个实际上是域对象+数据访问层的域模型。那就是 ActiveRecord 模式,但它是否与数据库紧密耦合,代码真的很难测试。
    【解决方案2】:

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

    【讨论】:

    • 尽管@teresko 指出了什么,我们也可以说(提供其他定义)领域模型是领域对象在那些情况下,领域对象是领域模型的一个元素?但也许在这里我们不是真正的“是”关系……而是更多的“有”。有趣的。这让我想起了“has-a”/“is-a”关系。
    • @MEM,类和对象是面向对象编程的元素。但是我们不能说类和对象是面向对象的编程;p
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    • 2013-10-14
    • 1970-01-01
    • 2011-02-10
    • 2010-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多