我想知道之间是否有任何区别:
领域驱动设计(DDD) 模型驱动设计(MDD) 我总是在许多文章和公共文献中找到这两个术语,但没有人强调这些差异。
答案 0 :(得分:3)
我个人觉得MDA和DDD相距甚远。
MDA专注于创建不同类型的模型,用于描述不同级别的软件系统。它鼓励对这些模型使用UML,并且可能有很多模型用于从不同的角度描述相当复杂的系统。创建了一些解决方案,如Rational Rose,用于从模型生成软件并使它们与代码保持同步。
与此同时,MDA没有说明您如何与业务沟通以了解他们的问题域。所有MDA都关注的是解决方案领域。
另一方面,DDD更多的是关于域名和语言的知识。简而言之,许多人将DDD描述为“在有界上下文中开发无所不在的语言”。我们鼓励您与领域专家交谈并了解他们的意见。您需要定义这些术语有意义的上下文,因为不同上下文中术语的差异可能会有很大差异。然后将每个上下文分离成高度内聚的组件,这些组件的组成形成一个完整的系统。DDD中有许多战术模式,如聚合根,实体,价值对象,存储库和工厂。但他们的主要目标是为开发人员提供一些工具来创建适当的抽象,这可以封装领域知识,而不会影响代码的可读性。
DDD最重要的部分是战略模式,如有界上下文,上下文映射和无处不在的语言。如果你不使用它 - 你没有DDD。并不重要,你使用哪种符号来绘制图表(有些只是使用粘滞便笺),这完全是次要的。
答案 1 :(得分:-1)
这两种设计方法非常相似。查看此StackOverflow链接,获取有关此主题的一些精彩详细解答:
Domain Driven Design vs Model Driven Architecture
总结链接中的答案,两种方法都侧重于在设计解决方案之前准确地建模问题。一般而言,DDD被认为更抽象,没有专门建议的技术或设计工具。 MDD / MDA被认为更具体,建议使用UML进行设计工作。