【问题标题】:DDD - What is a complex domain?DDD - 什么是复杂域?
【发布时间】:2019-10-17 15:01:29
【问题描述】:

人们常说,DDD(Domain-driven Design)更适合复杂的领域,而不是更简单的领域。

复杂领域的特点是什么? (请比“它有复杂的业务规则”更具体);

哪些是复杂领域的例子?

如何将域分类为复杂(即适合 DDD)?

【问题讨论】:

  • 我想说,这不仅适用于复杂的领域,也适用于旨在长寿的雄心勃勃的项目。第二个语句忽略了复杂性。

标签: domain-driven-design


【解决方案1】:

根据我的经验,使您的域复杂的 3 件最重要的事情:

尺寸

大域往往会增加复杂性。处理和协调很多事情总是很困难的。

规则和不变量

域(即使是只有几个有界上下文的域)在其用例和过程中可能有很多域规则和不变量和/或很多细微差别。这增加了复杂性。在实体或域间事件中发送大量更改的规则通常是复杂的业务规则

上下文

没有一个例子很难解释上下文的复杂性。让我们将与名为Product 的实体相关的上下文复杂性放入表中。

取决于上下文;一个实体在您的域中可能意味着不同的事物。 Product 实体对于工厂上下文、营销上下文、销售上下文、PostSales 支持上下文等具有不同的含义。

如果与Product 实体相关的数据、用户案例、流程、行为等在每个上下文中都非常不同,那么即使您只有少数上下文和实体,复杂性也会大大增加。这通常意味着您有许多 Product 实体(每个上下文中都有一个),即使它们都由同一个持久性存储支持(对于 ER 存储,相同的表)。

【讨论】:

    【解决方案2】:

    复杂性没有唯一的定义,但在 Vaughn Vernon 的书 (Implementing Domain Driven Design) 中有一个有用的描述:表 1.1 DDD 记分卡。

    他用不同的标准来描述项目,例如:一个复杂的项目会经常变化(新特性,很难预料),你不完全理解这个领域(或者有很多歧义您需要与业务专家讨论),@jlvaquero 所说的大小(语言的功能/规则/丰富度的数量......)。

    【讨论】:

      【解决方案3】:

      在我看来,复杂领域的标志之一是创建和维护通用语言的难度。

      随着词汇、短语和术语变得更加多样化,创建 UL 变得更加困难。这证实了域的复杂性。

      【讨论】:

        猜你喜欢
        • 2019-03-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-16
        • 2010-10-29
        • 2012-09-17
        • 2011-11-04
        • 2023-02-23
        • 2013-05-31
        相关资源
        最近更新 更多