MVC将整个模型或事件发送到视图

问题描述:

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

可观察

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

观察员

​​

模型发送通知,查看这样

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

我通知他们这样

notifyObservers(this); 

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

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

  1. 每次更新都发送模型,让视图在每次更新时都替换其参考。 这很好,特别是对于概念证明。随着消息变大,您可能会遇到问题,如果您通过网络分发您的应用程序。

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

  3. 不要发送任何模型更新视图,但只是告诉视图模型已经改变,它应该找出该怎么做。在分布式系统上,您可以让远程和本地模型保持彼此同步,但模型与视图之间的通信非常简单。

+0

我正在写一个GWT应用程序,因此根据您的建议发送整个模型似乎没有问题?什么是DELTA? – jax 2010-11-27 13:47:20