Все примеры GWT / MVP, о которых я узнал, кажутся слишком упрощенными, чтобы дать четкое представление о том, каковы лучшие практики в отношении отображения и обработки немного более сложных объектов модели.
Например, большинство примеров являются чем-то вродедокладчик, который прикрепляет обработчик щелчка к нескольким текстовым полям в представлении ... при нажатии кнопки сохранения вызывается функция save (), которая просто получает обновленные значения, и все готово в стиле MVP.Это не так реалистично.
Например, предположим, что у нас есть:
PresenterX - получает объект 'модель', скажем, любой объект с неизвестным числом различных примитивов или любым другим
ViewX - должен показывать объект модели в таблице и / или разрешать его редактирование / повторное сохранение
... так, чтобы это звучало очень, очень просто.Но мы не знаем количество полей в объекте модели, которое нам нужно будет отобразить.Так что это может относиться к динамическому количеству строк / столбцов.Вероятно, нет проблем для стола ... но как докладчик должен передать это в таблицу представления?Как объект модели, который представление понимает, или разбить его на кучу списков ... что представление, по сути, все еще должно понимать.
Кроме того, некоторые поля могут быть редактируемыми, из которых неизвестны, пока мыполучить объект модели (скажем, что-то в модели определяет, какие поля редактируемые) - так кто же должен отвечать за выяснение того, что редактируется или нет?Возможно, докладчик, но как нам повторить это в представлении, как MVP?
Наконец, скажем, есть кнопка «сохранить» в представлении ... кто работает, чтобы выяснить все строкив таблице которые были изменены?
Мне кажется, что представление должно либо лучше понимать модель, либо докладчик должен по-настоящему понимать представление - ни один из них не является хорошим MVP :( ... Или, возможно, должен быть какой-то посредникobject.
Я знаю, что есть несколько полезных и более полезных способов для такого рода вещей (Editors / RequestFactory и т. д.), но я ищу предложения по вышеописанному.