人们常说DDD(域驱动设计)更适合复杂域而不是简单域。
复杂域名的特征是什么? (请比&#34更具体;它有复杂的业务规则" );
哪些是复杂域名的例子?
如何将域分类为复杂域(即适用于DDD)?
答案 0 :(得分:5)
根据我的经验3,使您的域名变得复杂的最重要的事情是:
<强>尺寸强>
大域往往会增加复杂性。处理和协调很多事情总是很难。
规则和不变量
域(即使只有几个有界上下文的域)可能在其用例和进程中有很多域规则和不变量和/或很多细微差别。这增加了复杂性。在实体或域间事件中发送大量更改的规则通常是复杂业务规则。
<强>上下文强>
上下文复杂性很难用一个例子来解释。让我们在表格中列出与名为Product
的实体相关的上下文复杂性。
视情况而定;实体可能意味着您域中的不同内容。 Product
实体对于Factory上下文,Marketing上下文,Sales上下文,PostSales支持上下文等并不相同。
如果与Product
实体相关的数据,用户案例,流程,行为等在每个上下文中都非常不同,即使您只有少量上下文和实体,复杂性也会增加很多。这通常意味着您有许多Product
个实体(每个上下文中有一个),即使它们都由同一个持久性存储支持(如果是ER存储,则是相同的表)。
答案 1 :(得分:1)
没有复杂性的唯一定义,但在Vaughn Vernon书中有一个有用的描述(Implementing Domain Driven Design):表1.1 DDD记分卡。
他用不同的标准来描述项目,例如:一个复杂的项目经常会发生变化(新功能很难预料到),你还没有完全理解这个领域(或者有很多歧义)你需要与商业专家讨论),大小如@jlvaquero所说(特征/规则的数量/语言的丰富程度......)。
答案 2 :(得分:1)
我认为,复杂域的标志之一是创建和维护泛在语言的难度。
随着词汇,短语和术语变得越来越多样化,UL的创建变得越来越困难。这证实了域的复杂性。