Domain driven design 领域建模,DDD中的领域对象

Domain driven design 领域建模,DDD中的领域对象,domain-driven-design,Domain Driven Design,我对DDD真的很陌生,并试图掌握其中的一些概念 有人能给我解释一下DDD中领域建模背后的想法吗 我已经阅读了维基百科的解释:但在我的理解中似乎仍然存在一些灰色地带 根据我的理解,领域建模涉及围绕业务实体构建一个模型,以表达其关系,表达参与模型的实体等 这不是一直以来都在实践的东西吗?在面向对象的世界中,您可以将业务实体建模为类、对象等。。并围绕此构建软件 我不理解的是DDD中的领域建模重点。它是在OO世界中找到的同一个对象/类建模,还是DDD的新功能? 它与面向对象设计/建模有何不同 非常感谢您

我对DDD真的很陌生,并试图掌握其中的一些概念

有人能给我解释一下DDD中领域建模背后的想法吗

我已经阅读了维基百科的解释:但在我的理解中似乎仍然存在一些灰色地带

根据我的理解,领域建模涉及围绕业务实体构建一个模型,以表达其关系,表达参与模型的实体等

这不是一直以来都在实践的东西吗?在面向对象的世界中,您可以将业务实体建模为类、对象等。。并围绕此构建软件

我不理解的是DDD中的领域建模重点。它是在OO世界中找到的同一个对象/类建模,还是DDD的新功能? 它与面向对象设计/建模有何不同

非常感谢您的回答。

一个区别是,DDD中的“适当”实现与交叉关注点是分离的

例如,它与数据库或其他持久性无关。如果它包含验证逻辑,则是业务验证,而不是“名称是否超过列长度?”验证

其思想是域模型尽可能地用业务术语(“无处不在的语言”)封装“业务”,并在不默认软件需求的情况下向“程序”公开业务的相关方面

另一方面,“软件”涉及IO、UI等,但将所有业务逻辑委托给域模型


原则上,您可以将域模型包装在程序集中,并跨多个应用程序使用它。当业务规则发生变化时,正如它们所做的那样,您有一个非常符合逻辑的位置来影响变化(因为模型是业务相关方面的1:1或接近1:1的表示,并且用与业务相同的术语进行描述)。

DDD中的域不需要在OO中实现。根据我的经验,OO领域模型通常是最好的,但也有一些非常有效的例子,说明它可能不是

您可以使用规则引擎在规则中实现域(例如,在荷兰,这是针对大型抵押贷款应用程序实现的)。或者你可以用函数式语言来做。本质上,您的域无论以何种方式实现,都与我通常称之为应用程序的技术方面(或者,正如前面的回答所称,交叉关注点,尽管我认为域中可能存在交叉关注点)隔离开来。可以使用适配器实现的隔离层使域尽可能地、甚至完全地独立于技术细节。该层通常利用Facade和Observer等模式