2010-11-27 63 views
0

我正在更改我的應用程序以使用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

有幾種方法可以做這種事情。例如,您可以:

  1. 每次更新都發送模型,讓視圖在每次更新時都替換其參考。 這很好,特別是對於概念證明。隨着消息變大,您可能會遇到問題,如果您通過網絡分發您的應用程序。

  2. 在每次更新時發送增量,讓視圖根據此增量更新自身。這將有小信息的好處。在分佈式系統上,這可能會更好,但您需要在視圖中處理本地模型維護。

  3. 不要發送任何模型更新視圖,但只是告訴視圖模型已經改變,它應該找出該怎麼做。在分佈式系統上,您可以讓遠程和本地模型保持彼此同步,但模型與視圖之間的通信非常簡單。

+0

我正在寫一個GWT應用程序,因此根據您的建議發送整個模型似乎沒有問題?什麼是DELTA? – jax 2010-11-27 13:47:20

相關問題