带有Observer / Observable的Java MVC模式

时间:2011-01-13 08:58:04

标签: java model-view-controller observer-pattern

问候,

我正在构建我的应用程序中的问题。 给出我所处的场景。 我有这两个控制器都继承了从主控制器初始化的相同模型。 所有控制器都有自己的视图,但我只有一个模型。

问题在于。当模型发生变化时。 如何通知另一个控制器(来自两个控制器)发生了更新? 我要使用Observer / Observable或PropertyChangeEvent?如何,我对MVC架构上的实现感到有些困惑。

您对此事的回复表示高度赞赏。

谢谢, Cyril H。

3 个答案:

答案 0 :(得分:2)

我有一个类似的情况,我使用PropertyChangeSupport来收听模型的变化。我认为最好的方法是创建一个包含私有 PropertyChangeSupport 的AbstractEntity和两个公共方法 addPropertyListener,removePropertyListener 和一个受保护的方法 的firePropertyChange 。这些方法将用作PropertyChangeSupport的包装器。所以你的控制器应该只是addPropertyListeners来听取常见模型的变化。

注意:

  • 您应该在所有控制器中使用相同的模型实例。
  • 您需要的课程如下:

  • java.beans.PropertyChangeSupport
  • 的java.beans.PropertyChangeListener

  • 的示例代码
    public void setValue(String value){
          String oldValue=getValue();
          this.value=value;
          firePropertyChange("value",oldValue,getValue()); 
    }
    

  • 答案 1 :(得分:1)

    你的控制者应该只听模型。 (PropertyChange或其他)。你为什么要让你的控制者通知自己?

    如果它是您想要通知它的主控制器,也应该只听模型。是不是它自己初始化模型?

    答案 2 :(得分:1)

    我没有看到任何问题,

    • 制作模型observable
    • 你的控制者观察员

    或者如果前者听起来不合适,请引入listener