域驱动设计 – DDD和MDD之间的差异

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

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

解决方法

我个人觉得MDA和DDD相距很远.

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

与此同时,MDA没有说明您如何与业务沟通以了解其问题域.所有MDA都关注的是解决方案领域.

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

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

DDD最重要的部分是战略模式,如有界上下文,上下文映射和无处不在的语言.如果你不使用它 – 你没有DDD.并不重要,你使用哪种符号来绘制图表(有些只是使用粘滞便笺),这完全是次要的.

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...