Что делать с пользовательским вводом при использовании контроллера GRASP?

Давайте предположим, что пользователь хочет добавить клиента в систему. Он заполняет форму с информацией о клиенте и затем нажимает кнопку. Событие click фиксируется объектом формы на уровне пользовательского интерфейса. Кто отвечает за создание нового объекта клиента с информацией, предоставленной пользователем, самой формой или контроллером на бизнес-уровне?

В книге "Применение UML и паттернов" в примерах, которые я видел, пользовательский ввод передается в контроллер в форме или параметрах, а затем контроллер создает соответствующий объект. Я сомневаюсь, потому что мне сказали, что предпочтительнее передавать данные между слоями, используя объекты, а не набор параметров.

1 ответ

Решение

Это довольно широкий вопрос, по которому вы, скорее всего, получите в основном опционы, а не решения проблем. По моему мнению (так), очевидно, что ответственность за создание объекта лежит не на ответственности, а, вероятно, за работу над отдельным объектом (скорее всего, на фабрике). Задача диспетчера - распределять работу, поступающую в другие службы, - это единственная ответственность.

На том же основании создание объекта в форме в любом случае исключено, но есть и другая причина не создавать объект в форме: объект клиента принадлежит бизнес-уровню (домену), а не уровню представления. Этот аргумент становится недействительным, если вы говорите о создании объекта для целей передачи данных только между различными слоями, ср. ДТО. В этом случае было бы хорошо, если бы слой пользовательского интерфейса создал CustomerDTO и передает его контроллеру (вышеупомянутое обсуждение ответственности за создание объекта также применимо и здесь).

Другие вопросы по тегам