MVC отправляет всю модель или события в View - PullRequest
0 голосов
/ 27 ноября 2010

Я изменяю свое приложение, чтобы использовать шаблон MVC. В настоящее время в методе notify () для наблюдателя я отправляю всю модель в View. Это правильно или должно создавать отдельные события и отправлять их клиентам?

Наблюдаемый

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

1 Ответ

1 голос
/ 27 ноября 2010

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...