Java MVC 模式与 Observer/Observable

发布于 2024-10-12 05:55:33 字数 259 浏览 5 评论 0原文

您好,

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

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

非常感谢您就此事做出回应。

谢谢, 西里尔·H.

Greetings,

I have a problem in my application I'm building in.
To give the scenario I'm in.
I have these two controllers both inherit the same model initialize from a main controller.
All controllers have their on views but I have only one model.

To problem is that. When ever changes happens to that model.
How can I notify the other controller (from the two controllers) that an update occurred?
I'm a going to use Observer/Observable or PropertyChangeEvent? And how, I'm a little bit of confused on implement both on the MVC archictecture.

Your response is highly appreciated on this matter.

Thanks,
Cyril H.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

听风吹 2024-10-19 05:55:33

我有一个类似的情况,我使用 PropertyChangeSupport 来监听模型的更改。我认为最好的方法是创建一个包含私有 PropertyChangeSupport 和两个公共方法 addPropertyListener、removePropertyListener 和一个受保护方法 firePropertyChange。这些方法将用作 PropertyChangeSupport 方法的包装器。因此,您的控制器应该只添加PropertyListeners 以便监听公共模型的更改。

注:

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

  • java.beans.PropertyChangeSupport
  • java.beans.PropertyChangeListener
  • 示例代码说明如何

    public void setValue(字符串值){
          字符串oldValue=getValue();
          this.value=值;
          firePropertyChange("值",oldValue,getValue()); 
    }
    

  • I had a similar case where I used PropertyChangeSupport in order to listen to model's changes. I believe that the best way is to create an AbstractEntity that contains a private PropertyChangeSupport and two public methods addPropertyListener, removePropertyListener and a protected method firePropertyChange. Those methods will be used as wrappers of the PropertyChangeSupport's ones. So your controllers should just addPropertyListeners in order to listen to changes of the common model.

    Note:

    • You should use the same instance of model accross all the controlers.
    • The classes that you need are the following:

    • java.beans.PropertyChangeSupport
    • java.beans.PropertyChangeListener
  • Example code for how the

    public void setValue(String value){
          String oldValue=getValue();
          this.value=value;
          firePropertyChange("value",oldValue,getValue()); 
    }
    
  • 你的笑 2024-10-19 05:55:33

    您的控制器应该只听模型的声音。 (PropertyChange 或其他)。为什么您希望您的控制器通知自己?

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

    Your controlers should just listen to the model. (PropertyChange or something else). Why would you like your controlers to notify themselves ?

    If it is the main controller you want to notify it should just listen the model too. Isn't it itself who initialize the model ?

    谎言 2024-10-19 05:55:33

    我没有看到任何问题,

    • 让你的模型可观察,
    • 你的控制器观察者

    或者引入一个监听器,如果前者听起来不好。

    I don't see any problem,

    • make your model observable, and
    • your controller/s observer

    Or introduce a listener, if former doesn't sound good to you.

    ~没有更多了~
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文