Получение пользовательского ввода от слоя модели - PullRequest
0 голосов
/ 17 июня 2009

Возникла проблема при следовании шаблону проектирования MVP или MVC (относится к любому из них). Я не могу понять, как правильно запрашивать ввод данных от слоя модели? В зависимости от определенных значений в модели мне может потребоваться запросить ввод данных в середине процесса.

Например, мы возьмем гипотетический процесс ввода PO. Скажем, после того, как пользователь нажимает кнопку в представлении, он вызывает докладчика, передавая данные заказа на поставку из представления. Затем докладчик вызывает модель для проверки и вставки нового заказа в коллекцию заказов. Одна из проверок достоверности в модели - убедиться, что еще не введено другое ПО с такими же позициями. Если это так, приложение должно предложить пользователю подтвердить, что ПО не является дубликатом. Приложение в настоящее время глубоко в модели. Как пройти весь путь до представления, чтобы получить входные данные оператора, а затем вернуться к коду модели, на котором они остановились, чтобы завершить процесс ввода PO?

Ответы [ 2 ]

0 голосов
/ 17 июня 2009

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

Мартин Фаулер писал об этом здесь .

Что касается глубины модели, получения пользовательского ввода, а затем возврата к модели: не надо. Ваш контроллер отвечает за изменения в вашей модели и должен выполнить проверку, прежде чем пытаться изменить вашу модель. Это может потребовать отделения вашей проверки от кода обновления.

0 голосов
/ 17 июня 2009

В статье , которую я сначала прочел на докладчике , было высказано предположение, что докладчик имел зависимости от модели и от представления и подписывался на события как модели, так и представления. Это будет означать, что вы можете вызвать событие из модели в точке, где обработка не может продолжаться. Презентатор будет обрабатывать событие из модели, вызывая некоторый метод в представлении (который будет запрашивать пользователя). Возвращаемое значение из метода в модели будет затем возвращено в модель (входной / выходной параметр для события, подобный подклассам EventArguments, используемым в .NET).

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