DDD和MDD之间的差异

V.S*_*.S. 6 domain-driven-design

我想知道之间是否有任何区别:

领域驱动设计(DDD)模型驱动设计(MDD)我总是在许多文章和公共文献中找到这两个术语,但没有人强调这些差异.

Ale*_*rev 6

我个人觉得MDA和DDD相差甚远。

MDA 专注于创建不同类型的模型来描述不同级别的软件系统。它鼓励对这些模型使用 UML,并且可能会产生很多这样的模型来从不同的角度描述相当复杂的系统。创建了一些解决方案,例如 Rational Rose,从模型生成软件并使它们与代码保持同步。

同时,MDA 没有提及如何与企业沟通以了解他们的问题领域。所有 MDA 关注的都是解决方案领域。

另一方面,DDD 更多的是关于领域和语言的知识。简而言之,许多人将 DDD 描述为“在限界上下文中开发通用语言”。我们鼓励您与领域专家交谈并了解他们在说什么。您需要定义这些术语有意义的上下文,因为不同上下文中术语的差异可能有很大不同。然后,每个上下文被隔离为一个高度内聚的组件,这些组件的组合形成一个完整的系统。

DDD 中有许多战术模式,如聚合根、实体、值对象、存储库和工厂。但他们的主要目标是为开发人员提供一些工具来创建适当的抽象,这些抽象可以封装领域知识而不影响代码的可读性。

DDD 最重要的部分是策略模式,如限界上下文、上下文映射和通用语言。如果你不使用这个——你就没有 DDD。使用哪种符号来绘制图表并不重要(有些只是使用便签),这完全是次要的。


小智 0

这两种设计方法非常相似。查看此 StackOverflow 链接,了解有关此主题的一些精彩、详细的答案:

领域驱动设计与模型驱动架构

总结链接中的答案,两种方法都侧重于在设计解决方案之前准确建模问题。一般来说,DDD 被认为比较抽象,没有特别建议的技术或设计工具。MDD/MDA 被认为更具体,建议使用 UML 进行设计工作。