java - MVC 和 Java GUI 监听器

标签 java model-view-controller user-interface listener

我想问一下,从设计模式的角度来看,将 GUI 的 listeners 放在“view”或“controller”中哪个更好。一位同事认为“风景”是最自然的地方,但我不太确定。

最佳答案

如果您正在谈论 Swing,那么 previously discussed ,Java中的MVC并不像模式所暗示的那样清晰和简单。那么,要回答您的问题,取决于您如何针对特定应用程序定义“ View ”和“ Controller ”,以及您将其中一个或另一个“放置监听器”的意思。

我认为监听器是 Controller 机制的一部分——它们在 View (显示当前状态)和模型(维护当前状态)之间提供了一种松散的耦合,并提供了一种方法两者进行互动。然而,大多数 Swing 监听器都非常紧密地绑定(bind)到 UI 事件 - 单击鼠标按钮、从列表中选择项目等 - 因此您可能需要创建一个额外的抽象层来接收这些 UI 事件,这些事件由监听器捕获,并将它们转化为对您的应用程序领域更通用的内容。例如,EJB 可以为某些业务逻辑提供通用接口(interface),这些业务逻辑可能由 Swing UI 或通过 Web 服务的 API 调用触发。然后, Controller 就是 EJB,触发对该 EJB 的调用的 Swing 事件监听器位于 View 中。

关于java - MVC 和 Java GUI 监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4839885/

相关文章:

java - 尝试重新打开已关闭的对象: SQLiteQuery

java - 来自 Groovlet (Groovy Servlet) 的 JSP PageContext

javascript - 我如何在 sap ui 的 Controller 中定义自定义 Controller ?

performance - matlab中获取控件底层java组件的快速方法

java - 手机号码验证问题的正则表达式模式

java - 具有静态构造函数的类的多个实例

用于编码/解码 EXI 的 java 示例?

c# - 从 MVC 查询 Active Directory 结果为 : Attempted to access an unloaded appdomain.(HRESULT 异常:0x80131014)

python - MVC 框架从一种语言到另一种语言(例如 ASP.NET、Python、RoR 等)差异很大吗?

javascript - 在 Kendo UI 网格中处理 100 万条记录