2010-11-27 10 views
0

MVCパターンを使用するようにアプリケーションを変更しています。現在、オブザーバのnotify()メソッドでは、モデル全体をビューに送信しています。これは正しいのですか、別のイベントを作成してクライアントに送信する必要がありますか?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

+0

デルタは違い、更新されたもの – akf

関連する問題