【问题标题】:Grouping user interface logic into a sort of UIService?将用户界面逻辑分组为一种 UIService?
【发布时间】:2011-08-16 02:57:40
【问题描述】:

习惯于使用服务和它们提供的简洁调用来与业务层交互,我一直想知道这种方法是否可以应用于用户界面。

例如,在 Swing 应用程序中,我经常发现自己添加了一些逻辑来处理不同的操作。如果这是针对接口进行编程的,这会将实际处理与演示分开,并可能使代码更清晰易读。

那么,可以为此应用额外的层吗?知道 MVC 最常应用于 UI,似乎可以使用控制器的想法进行有趣的并行。

【问题讨论】:

  • 你在哪里添加你的逻辑? Swing 已经在接口方面做了很多工作,即 EventListeners。您可以轻松地将它们添加到一个外观中以处理特定域的所有操作。或者你向那些监听器注入一个非常高级的服务,但这听起来你需要很多非常具体的服务,我不知道它是否对域有帮助
  • 应用程序逻辑本身可以在域服务类中找到。这里提到的逻辑是特定于 UI 的,它反过来将调用转发到服务域层。我目前所做的是将处理代码留在组件中(混乱)或将其提取到 AsbtractAction 类中。
  • (续)留下代码的问题是处理和呈现之间没有像implementation of MVC 那样的明确区分。让我想到一个额外的层是因为一些架构有其他类型的层(应用程序、基础设施......),这样的层可以位于服务域层之上。这个想法是提取实现,以便我或其他开发人员可以交换/增强代码。某种外观肯定适合。

标签: java architecture domain-driven-design


【解决方案1】:

Apache Wicket 有一个非常清晰的 html gui 方法。那里的大多数组件都有自己的组件模型。事实上,这导致每个组件都有许多小控制器,这使得它们比我见过的大多数其他结构更容易维护。你对新层的想法似乎是一个非常相似的想法。

【讨论】:

  • 感谢您的链接。可能是错误的,但许多控制器的提及让我想起了 HMVC(参见 diagram。这个想法在 Javaworld article 中进行了讨论(如果有人找到来源,请告诉我)。会检查出来:)跨度>
  • @James Poulson 您在那里分享的非常好的文章!我什至不记得HMVC了。上次我遇到它是在我调查一个 C# 项目时,它有一个简单的背景,可以更轻松地将窗口窗体组件交换为基于 WPF 的组件。就我个人而言,我认为对于网络项目来说这是垃圾。我从来没有遇到过在没有重新设计其语义的情况下重新设计页面的情况,因此控制器总是受到相同的影响。相反,我最多喜欢一个薄的表示层。你的想法似乎也是这样。在我看来,Wicket 做得很好。
猜你喜欢
  • 1970-01-01
  • 2020-12-20
  • 2020-03-25
  • 2019-03-02
  • 1970-01-01
  • 2022-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多