【问题标题】:Layer talk to each other in JavaEEJavaEE 中的层相互通信
【发布时间】:2014-02-07 11:28:33
【问题描述】:

有一个 JavaEE 应用程序是这样从下往上分层的:

实体 -> 数据访问对象 (DAO) -> 控制器 -> 外观

在这种架构中,Controllers 应该如何相互通信?可以互相调用对方的方法还是必须通过DAO层来完成?

【问题讨论】:

  • Controller 既是你的业务层又是 UI 控制器?如果没有,服务/业务层在哪里?
  • @kostja,控制器只保存业务逻辑。 UI 实际上是在 JSF 中,它可以通过 Facade 访问数据。

标签: jakarta-ee controller entity dao


【解决方案1】:

假设控制器代表您案例中的业务层。

服务层中的 EJB 拥有自己的层次结构是很常见的。在向客户端和 UI 提供作为 API 的更通用功能的同时,EJB 可以相互提供细粒度的功能。所以是的,同一层的对象可以相互通信,并且通常被设计为这样做。

其背后的基本原理是从内部功能中抽象出外部 API 并减少重复。

编辑:在引入新的依赖项时请不要犹豫。在耦合、可测试性和架构一致性方面通常存在不利因素。您永远不应该“从下面”使用层甚至同一层内的对象——这意味着从具有较低抽象的对象到具有较高抽象的对象。感觉不确定通常暗示着要多看两眼。

【讨论】:

  • 谢谢哥们。我犹豫要不要互相注入控制器。
  • 不客气 :) 在结果不明确时犹豫不决是正确的做法。请查看编辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-22
  • 2011-06-21
  • 2013-11-09
  • 2021-04-25
相关资源
最近更新 更多