java - 我可以在 MVC Java 中使用 Observer/Observable 和 Listener 吗?

标签 java swing model-view-controller

我正在用 Java 制作游戏(这是我第一次使用 Java 和面向对象语言)。游戏实现了MVC设计模式。现在我有一个问题。我可以在模型和 View (对于我使用 Swing 库的 View )之间使用 Oserver/Observable 模式,在 View 和 Controller 之间使用 Listener 模式吗? View 有很多按钮。游戏过程中会有一张带有一些区域和道路的 map 。要玩游戏,玩家必须单击一个区域或一条道路,然后决定要执行的操作。最好的解决方案是什么?如果您不明白,我会尽力更好地解释游戏。 谢谢您的帮助。

最佳答案

Java 中的观察者模式是使用事件和监听器来实现的。您只需要set up listeners for the events你想要,而你却离开了。

  1. 事件传递(到监听器方法)一个继承自 java.util.EventObject 的参数,这些参数包含有关特定事件的信息。
  2. 监听器是一个对象(具体的或匿名的),它实现监听器接口(interface),其中包含事件发生时调用的一个或多个方法
  3. Adapter classes ,例如 WindowListener 为具有多个监听器方法的接口(interface)提供预实现的父类(super class),允许您继承并仅实现您想要的一两个。
  4. 事件监听器经常使用 anonymous classes 来实现

例如,监听按钮上的点击事件:

button.addActionListener(new ActionListener(){ // this is an "anonymous class"
    @Override public void actionPerformed(ActionEvent arg0) {
        // TODO: do something
    }               
});

您还可以生成自己的事件源,因此您可以在整个过程中使用观察者模式来监视对象的更改并更新 UI,并对 UI 事件使用react。 “监听器”并不是正式的 GOF 模式,但在 Java 中监听器指的是用于对事件使用react的接口(interface)和对象。

关于java - 我可以在 MVC Java 中使用 Observer/Observable 和 Listener 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23857102/

相关文章:

java - 等待图表刷新,selenium Java

c# - Azure Active Directory 获取用户组

c# - 找不到类型或命名空间名称 'nullable'(是否缺少 using 指令或程序集引用?)

javascript - jQuery MVC 架构

java - TCP 套接字无法接收数据包

java - 我可以将 Play 配置为使用 mysql 枚举而不是整数吗?

java - 为什么 Thread 的子类可以吞下 InterruptedException?

java - 我的 (Java/Swing) MouseListener 没有监听,请帮我找出原因

java - 行、模型行和 View 行的有趣行为 - 何时使用哪一个?

java - 程序无法正确绘制屏幕