我是DDD的新手,正在尝试掌握其中的一些概念。
有人能给我解释一下DDD中域建模背后的想法吗?
我已经看过了维基百科的解释:http://en.wikipedia.org/wiki/Domain_model,但在我的理解中似乎仍然存在一些灰色地带。
根据我的理解,领域建模涉及围绕业务实体构建模型,以表达它们之间的关系,表达参与模型的实体等。
这不是一直在实践中的事情吗?在面向对象的世界中,您将业务实体建模为类、对象等。并围绕这一点构建软件。
我不理解的是领域建模在DDD中得到的重视。这是你在OO世界中发现的相同的对象/类建模,还是DDD的新特性?它与面向对象的设计/建模有什么不同?
非常感谢您的回答。
发布于 2010-08-26 03:27:15
一个区别是DDD中的Domain Model Pattern的“适当”实现是与横切关注点隔离的。
例如,它不包含与数据库或其他持久性有关的内容。在包含验证逻辑的地方,它是业务验证,而不是“名称是否超过列长度?”验证。
其思想是,域模型尽可能地封装“业务”--用业务术语(“普遍存在的语言”) --并将业务的相关方面暴露给“程序”,而不默认软件的需求。
另一方面,“软件”关注IO、UI等,但将所有业务逻辑委托给域模型。
原则上,您可以将域模型包装在一个程序集中,并在多个应用程序中使用它。当业务规则发生更改时,您有一个非常合乎逻辑的地方来影响更改(因为模型是业务相关方面的1:1或接近1:1的表示,并且使用与业务相同的术语进行描述)。
发布于 2010-09-01 22:49:08
DDD中的域不需要在OO中实现。在我的经验中,OO领域模型通常是最好的,但在一些非常有效的情况下,它可能不是最好的。
您可以使用规则引擎在规则中实现一个域(例如在荷兰,这是为大型抵押贷款应用程序所做的)。或者你可以用函数式语言来实现。本质上,您的领域,无论它是如何实现的,都与我通常所说的应用程序的技术方面是隔离的(或者,正如前面的答案所说的,它是横切关注点,尽管我认为在一个域中很可能存在横切关注点)。可以使用适配器实现的隔离层使域尽可能多地,甚至完全独立于技术细节。这一层通常利用外观和观察者等模式。
https://stackoverflow.com/questions/3569389
复制相似问题