Является ли ГЭФ действительно основой MVC? - PullRequest
1 голос
/ 07 ноября 2011

в руководствах от http://www.vainolo.com/tutorials/ положение модели сохраняется в модели.Я хочу сохранить все данные в файл и получить тот же вид при загрузке файла.

В поисках ответа на этот вопрос я получил еще один более важный вопрос:
действительно ли GEF является средой MVC?

Контроллеры GEF говорят, что роль контроллера mvc взята из EditPart .Он создает указанные объекты.
Относительно examples контроллер содержит части представления, но шаблон mvc сообщает, что контроллер реагирует только на взаимодействие с пользователем и сообщает представлению, что он должен обновить или что-либо еще.
Заключение: следующий код неверен, потому что он является частью EditPart и изменяется:

public void refreshVisuals(){
    IPersonFigure figure = (IPersonFigure)getFigure();
    Person model = (Person)getModel();
    figure.setName(model.getName());
    figure.setSurname(model.getSurname());
}

Относительно wikipedia представление имеет виднаблюдатель в модели, поэтому следующее предложение из GEF неверно, не так ли?
EditPart синхронизирует фактическое состояние модели с представлением и реализует наблюдателя.

В шаблоне MVC контроллеры должны прослушивать изменения модели.В GEF EditParts являются контроллерами, поэтому они должны прослушивать свою модель, чтобы обновить представление в соответствии с новым состоянием модели.

Так что же правильно?

Чтобы предотвратить пересечение-постинг посмотреть на http://www.eclipse.org/forums/index.php/m/755178/.

1 Ответ

2 голосов
/ 08 ноября 2011

Википедия в начале статьи о MVC утверждает, что «MVC выпускается в разных вариантах ( Обзор MVC ). Иногда представление может напрямую читать модель и обновлять себя, иногда это делается контроллер.

Основная концепция, которую предоставляет MVC, - это отделение представления от представления, которое не должно содержать логики. Изменения в модели выполняются контроллерами, а изменения в представлении вызываются при изменении модели. Но это не означает, что контроллер не может быть тем, кто обновляет представление при изменении модели. Кто-то должен это сделать, верно? Лично я считаю, что иметь представление, непосредственно считанное из модели, не очень хорошая практика, так как это делает их слишком зависимыми, и эта модель и представление должны быть полностью разделены. Это замечательно, когда вам нужно внести изменения в вашу модель (например, поле изменяется с реального на вычисляемое) - вам не нужно менять свое представление (но вам, возможно, придется менять свой контроллер, но это обычно проще).

Надеюсь, это прояснит для вас.

...