【问题标题】:universal data models and domain model implementations通用数据模型和领域模型实现
【发布时间】:2011-10-14 14:51:31
【问题描述】:

我正在阅读的一位通用数据模型作者认为,根据他的经验,50% 的企业系统在处理各方、工作努力等方面是“通用的”,25% 在该企业的行业中是通用的,余额是特定企业独有的(例如,可口可乐诉百事可乐)。

但我不知道基于此构建的代码,也想不出有人真正从领域的角度看待模式,而不是数据建模,因为 Fowler 在 90 年代中期就这样做了。

对于通用数据模型的有用性,是否有人对 DDD 有任何基于意见的经验?

您是否真的将派对的子类型限制为个人和组织,而其他所有人都担任角色?如果是这样,你如何实现?

您喜欢任何实施指南或开源系统吗?

干杯,
浆果

【问题讨论】:

    标签: domain-driven-design data-modeling domain-model object-model


    【解决方案1】:

    您是否确实将派对的子类型限制为 Person 和 组织,与其他所有人一起担任角色?你是如何实现的 如果是这样?

    对于一个最小的实现,请参阅this SO answer

    简短的故事是,如果特定角色(可能不是最好的词)引用超类型,如果它是一个可以由个人和组织担任的角色。 “客户”可能就是一个很好的例子。

    如果一个特定角色只能由一个人担任,则它会引用个人子类型。 “员工”或“员工”可能是一个很好的例子。

    如果某个角色只能由一个组织担任,则它会引用该组织子类型。 “雇主”或“前雇主”可能是一个很好的例子。

    (并非所有这些示例都在链接的答案中,但我认为 PostgreSQL 源代码可以很容易地弄清楚您可能需要做什么。)

    【讨论】:

    • 是的,这就是我正在寻找的,但我在实施的细节中发现了魔鬼。一直在“玩”装饰器模式,但它的移动部分比我喜欢的要多。很快就会看看那个 SO 答案。干杯
    【解决方案2】:

    通用模式书籍和 Fowlers 分析模式中介绍的数据和领域模型非常有用,因为它们提供了模型结构的详细和概括性概述。我在创建更具体的领域模型时将它们用作参考,并且通常只使用书中描述的模型的一部分。

    就 Fowler 书中的责任模式而言,Party 与 Role 不同,因为特定的 Party 可以扮演多个角色。所以对我来说,政党可以是个人或组织是有道理的。 .NET 框架中的一个示例是 IIdentityIPrincipal 接口。 IIdentity 可以代表一方,而 IPrincipal 是一个身份和一组角色的组合。

    【讨论】:

    • +1 用于分离党和角色。这是一种非常简单但功能强大的技术,适用于许多不同的环境。
    • @sfinnie。我以为我在概念上分离了党和角色,并寻找一些经过验证的实现,最好是在 c# 中。有什么你特别喜欢的吗?
    • @eulerfx。您倾向于经常使用的派对和角色的任何实现?干杯
    • 实现通常特定于用例,我不知道有任何 DDD 项目专注于参与方/角色实现,但是 .NET 框架中的示例有几个实现。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    • 2015-11-12
    相关资源
    最近更新 更多