【问题标题】:MVC send the entire model or events to the ViewMVC 将整个模型或事件发送到视图
【发布时间】:2011-05-16 13:15:31
【问题描述】:

我正在更改我的应用程序以使用 MVC 模式。目前在观察者的 notify() 方法中,我将整个模型发送到视图。这是正确的还是应该创建单独的事件并将它们发送给客户端?

可观察的

public interface Observable<T> {  
       void notifyObservers(T model);
        void addObserver(Observer<T> o);
        void removeObserver(Observer<T> o);
        void removeAllObservers();
}

观察者

public interface Observer<T> {
    void notify(T o);
}

模型发送通知以查看这样的视图

@Override
public void notifyObservers(ModelViewInterface model) {
    for(Observer<ModelViewInterface> o : this.observers)
        o.notify(model);
}

我会这样通知他们

notifyObservers(this);

在ModelViewInterface 中我只有getter 方法(没有setter 方法),我的模型实现了这个接口。

【问题讨论】:

    标签: java model-view-controller


    【解决方案1】:

    有几种方法可以做这种事情。例如,您可以:

    1. 在每次更新时发送模型,让视图在每次更新时替换其引用。 这没关系,特别是对于概念证明。如果您通过网络分发您的应用程序,您可能会遇到问题,因为消息变得越来越大。

    2. 在每次更新时发送增量,让视图根据此增量自行更新。这将具有较小消息的好处。在分布式系统上这可能会更好,但您需要在视图中处理本地模型维护。

    3. 不要将任何带有更新的模型发送到视图,而只是告诉视图模型已更改并且它应该弄清楚要做什么。在分布式系统上,您可以让远程模型和本地模型保持同步,但模型和视图之间的通信非常简单。

    【讨论】:

    • 我正在编写一个 GWT 应用程序,所以根据您的建议发送整个模型似乎可以吗?什么是 DELTA?
    • 差异是差异,已经更新的东西
    猜你喜欢
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 2023-02-14
    • 1970-01-01
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多