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方法),我的模型实现了这个接口。
答
有几种方法可以做这种事情。例如,您可以:
每次更新都发送模型,让视图在每次更新时都替换其参考。 这很好,特别是对于概念证明。随着消息变大,您可能会遇到问题,如果您通过网络分发您的应用程序。
在每次更新时发送增量,让视图根据此增量更新自身。这将有小信息的好处。在分布式系统上,这可能会更好,但您需要在视图中处理本地模型维护。
不要发送任何模型更新视图,但只是告诉视图模型已经改变,它应该找出该怎么做。在分布式系统上,您可以让远程和本地模型保持彼此同步,但模型与视图之间的通信非常简单。
我正在写一个GWT应用程序,因此根据您的建议发送整个模型似乎没有问题?什么是DELTA? – jax 2010-11-27 13:47:20