首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >域模型及其可见性问题

域模型及其可见性问题
EN

Stack Overflow用户
提问于 2010-05-05 03:11:46
回答 3查看 160关注 0票数 6

我参与了一场关于领域模型可见性的有趣辩论&我想知道这里的人是否有好的指导。

  • 根据我对MDA的理解,我们不需要在整个应用程序层和层中公开域模型。
  • 原因是域模型的任何更改都会对整个应用程序产生影响。
  • 明智的做法是公开轻量级对象(DTO),这是域模型的一个小子集,用于抽象实际模型。
  • 另一方面,对域模型的任何更改都意味着在整个应用程序中更改各种DTO以使更改可见,而如果我们公开域模型,则更改位于单个位置

希望能看到一些关于这方面的评论和想法。

感谢你的帮助!

EN

回答 3

Stack Overflow用户

发布于 2010-05-05 05:44:31

不,那不是MDA的意义。它是关于将自己与特定平台隔离开来,使用更高级别的表示法(UML及其动作语言)来指定系统的行为。

是否应该公开域模型取决于应用程序。对于定期使用应用程序的用户(想想您的IDE),域模型将被清楚地公开,并且您将直接操作该域中的对象。但是对于偶尔使用的应用程序(比如在机场办理登机手续的亭),应用程序应该引导用户完成工作流程。

即使要屏蔽域对象,DTO也不一定必要;这取决于域对象是否与呈现UI的层位于相同的进程空间中。需要DTO的体系结构并不能很好地适应新的需求,因为它们违反了DRY原则。

事实上,完全从直接公开的域对象构建企业应用程序是可能的;这就是裸对象模式的目标。有几个开源框架实现了这一点,包括原始的裸对象框架(在Java上)。.NET也有一个类似的商业模式。

有关领域对象的更多讨论,我建议您查看Evans的书“领域驱动设计”。雅虎上也有一个活跃的新闻组。

完全公开:我是NOF的提交者,而不是直接参与.NET版本。

票数 2
EN

Stack Overflow用户

发布于 2010-06-28 15:04:07

我同意丹的观点。解决这一问题的一种方法是使用接口。使您的公共方法返回您的域对象最初实现的接口。当您发现从应用程序返回域对象不再起作用时,您将引入DTO并实现相关接口。虽然库的内部结构已经改变,但是任何消费应用程序都不会受到影响。

票数 0
EN

Stack Overflow用户

发布于 2010-07-02 11:21:04

我对这个领域不太了解,但我最近读到了这个Gojko Adzic的博客文章,我认为这是相关的,我认为DTO并不一定是一个好主意,在不同的层上重复您的域模型是可以的,这样就不会违反DTO。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2770381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档