2010-11-27 2 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(); 
} 

Наблюдатель

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), и моя модель реализует этот интерфейс.

ответ

1

Есть несколько способов сделать такие вещи. Например, вы можете:

  1. Отправляйте модель с каждым обновлением, замените ее ссылкой на каждое обновление. Это нормально, особенно для доказательства концепции. У вас могут возникнуть проблемы, если вы распространяете свое приложение по сети, поскольку сообщения становятся больше.

  2. Отправляйте дельта с каждым обновлением, обновите представление, основанное на этой дельта. Это будет полезно для небольших сообщений. В распределенной системе это может работать лучше, но вам нужно обработать локальное обслуживание модели в представлении.

  3. Не отправляйте какую-либо модель с обновлениями в представление, но просто сообщите, что модель изменилась, и она должна выяснить, что делать. В распределенной системе вы можете использовать удаленные и локальные модели для синхронизации друг друга, но связь между моделью и представлением очень проста.

+0

Я пишу приложение GWT, поэтому отправка всей модели, похоже, в порядке с вашими предложениями? Что такое DELTA? – jax 2010-11-27 13:47:20