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

时间:2014-05-25 15:46:57

标签: java swing model-view-controller

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

1 个答案:

答案 0 :(得分:1)

Java中的Observer模式是使用事件和侦听器实现的。你只需要set up listeners for the events你想要的,而你就不在了。

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

    例如,在按钮上收听点击事件:

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

    您也可以生成自己的事件源,因此您可以始终使用Observer模式来监视对象的更改并更新UI,还可以对UI事件做出反应。 "监听"不是正式的GOF模式,但在Java中,侦听器指的是用于响应事件的接口和对象。