在 DDD 中,表示层可以同时使用 Repository 和 Service 类吗?

2024-04-30

如果表示层只应该使用服务,那么服务类必须公开存储库已实现的相同方法,以使它们可供表示层使用。

这似乎是错误的。有人可以帮我澄清一下吗?


我敢打赌,这似乎是错误的,因为您实际上并不需要这种抽象级别。

应用服务有facades http://en.wikipedia.org/wiki/Facade_pattern。糟糕的外观会增加比其解决的问题更多的复杂性。像这样的事情:

public int Increment(int v){ v=v+1;return v;}

除非它足够解决复杂性,或者您明确希望所有内容都经过附加层以尽可能地解耦客户端 - 这是没有用的。

就我个人而言,我只是将这些东西放在控制器中(如果使用 MVC 模式):

public ActionResult ViewBlogPost(int id){
  //I like to name repositories as collections
  var blog=_blogs.Find(id);

  blog.IsBeingViewedBy(_currentViewer); 
  return View(blog);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 DDD 中,表示层可以同时使用 Repository 和 Service 类吗? 的相关文章

  • 跨页面加载跟踪子窗口

    如果重新加载父页面 是否可以跟踪子窗口 我目前打开窗口如下 var childWindow childWindow window open url 当我想重新打开同一个子窗口时 childWindow focus 明显的问题是 如果刷新父窗
  • 你现在在做MDA(模型驱动架构)吗?如果是这样,您使用什么工具,效果如何?

    模型驱动架构是这样一种想法 您创建模型 以一种不依赖任何 或至少大多数 实现技术的方式表达您需要解决的问题 然后为一个或多个特定平台生成实现 人们声称 在更高的抽象级别上工作更加强大和高效 此外 您的模型比技术更长寿 因此 当您的第一语言
  • 在 DDD 中,表示层可以同时使用 Repository 和 Service 类吗?

    如果表示层只应该使用服务 那么服务类必须公开存储库已实现的相同方法 以使它们可供表示层使用 这似乎是错误的 有人可以帮我澄清一下吗 我敢打赌 这似乎是错误的 因为您实际上并不需要这种抽象级别 应用服务有facades http en wik
  • 检测 vb.net 中的浏览器关闭事件

    我的网页如下所示
  • 将 showModalDialog() 的内容添加到剪贴板 Google 脚本

    当我单击按钮时 我已将格式化数据添加到模态对话框中 我想要的内容showModalDialog 当我单击按钮时也会自动添加到剪贴板 模态是用下面的代码生成的 并且temp是我想要添加到剪贴板的输出 Output to Html var ht
  • 我可以采取什么方法使用 Web 技术开发桌面应用程序

    我想知道是否有任何方法可以创建一个作为桌面应用程序启动的应用程序 供个人使用 由于桌面应用程序可以使用我的 HDD 文件 我可能想要管理这些文件 但觉得将它们扔到网络服务器上并不安全 但我认为我将来可能想做的是将应用程序移植到网络上 因为我
  • 为什么要分离接口和实现?

    在生产代码中 我经常看到定义如下的类 public interface SomeComponent Some methods public class SomeComponentImpl implements SomeComponent S
  • 是否有用于序列化和反序列化各种格式的对象层次结构的模式?

    给定一个复杂的对象层次结构 幸运的是它不包含循环引用 如何实现支持各种格式的序列化 我不是来讨论实际实施的 相反 我正在寻找可能派上用场的设计模式的提示 更准确地说 我正在使用 Ruby 我想解析 XML 和 JSON 数据以构建复杂的对象
  • 具有持久性无知对象的持久性和领域事件

    我一直在研究领域驱动设计领域事件 http www udidahan com 2009 06 14 domain events salvation 我真的很喜欢这些事件提供的关注点分离 我遇到了保留域对象和引发域事件的顺序问题 我想在域对象
  • 如何使我的网络应用程序兼容 iPhone 5?

    我有一个使用 iOS safari 优化为 Web 应用程序的网站 因此添加到主屏幕会在单独的 Web 视图中打开该应用程序 然而 它总是以 3 5 信箱模式打开 而不是拉伸以填充屏幕 我知道使用本机应用程序 您只需添加 iPhone 5
  • Clojure Web 应用程序 - 我从哪里开始?

    最近我一直在研究 Clojure 我喜欢这门语言 我想看看我是否可以在其中制作一个小型网络应用程序 只是为了挑战自己 但是 我完全没有设置任何与 Java 相关的 Web 应用程序的经验 事实上 我对 Java 并没有太多的经验 我从哪说起
  • 身份验证和用户任务

    我正在考虑开发一个具有明确定义域的系统 主要基于网络 域的一部分包括像这样的实体Diary Booking Customer etc 不过我创建了另一个名为User其目的仅用于身份验证和授权 污染Customer具有特定于身份验证的数据的实
  • 如何区分浏览器选项卡中的会话?

    在使用 JSP 和 Servlet 以 java 实现的 Web 应用程序中 如果我在用户会话中存储信息 则同一浏览器的所有选项卡都会共享该信息 如何在浏览器选项卡中区分会话 在这个例子中
  • IMAP 转发器

    我想知道从 IMAP 帐户转发邮件的最快 最可靠的方法是什么 我的大学不允许我们的学生邮箱转发到私人电子邮件帐户 这里每个人都使用 Gmail 或 Hotmail 这是一个政治问题 而不是技术问题 我们确实可以通过 IMAP 访问邮箱 我想
  • 关于多客户端和可定制 Web 应用程序的架构所需的建议[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 网络应用程序如何询问移动设备的位置?

    许多现代手机 谷歌Nexus等 都有某种内置的定位服务 当我访问某个网站 例如 google com 时 该网站会询问我是否愿意与该网站分享我的位置 您实际上如何要求移动设备向网站提供其位置 该位置以什么格式给出 我没有任何线索 也没有从谷
  • 奇怪的行为与缓存。清单/离线使用网络应用程序保存到ipad ios6的主屏幕

    我刚刚在装有新 iOS 6 的 iPad 上发现了一些奇怪的行为 我正在测试一个用于离线使用的网络应用程序 Web 应用程序只不过是一个带有缓存清单的静态网站 因此没有使用像 sencha touch 这样的特殊框架或像 phnoegap
  • 领域驱动设计 (Linq to SQL) - 如何删除聚合的某些部分?

    我似乎对整个 DDD LinqToSql 业务感到有点困惑 我正在使用 POCOS 和 linq to sql 构建一个系统 并且我有聚合根的存储库 因此 例如 如果您有 Order gt OrderLine 类 那么您就有了 Order
  • Web 组件 - 服务/非 html 组件

    所以我来自 Angular 想看看如何创建vanilla Web components 现在 从 Angular 开始 我们倾向于将事物分开 组件 充当 HTML CSS 和一些 javascript 然后是 服务 主要负责收集数据和执行不
  • 使用实体框架从集合中删除项目

    我正在使用DDD 我有一个 Product 类 它是一个聚合根 public class Product IAggregateRoot public virtual ICollection

随机推荐