Разве плохо, когда объект бизнес-логики запрашивает ввод у пользователя? - PullRequest
1 голос
/ 11 января 2011

У меня есть блок-схема, которую я реализую, и она имеет 4 или 5 путей через нее в зависимости от ввода пользователя и результатов некоторой обработки. Естественно, я не хочу, чтобы вся эта логика была в моей форме Windows, я просто хочу вызвать метод класса в форме. Разве это плохо, когда мой класс бизнес-логики ссылается на System.Windows.Forms и показывает диалоги и MessageBoxes для получения входных данных, необходимых для обработки и возврата результата?

Ответы [ 5 ]

4 голосов
/ 11 января 2011

Да, это плохой дизайн.Ваш класс должен предложить средство общения с формой и получения данных обратно.Просто создайте события и позвольте Form подписаться на них, получая информацию для создания диалогов из пользовательского класса EventArgs.После того как он получит ввод, просто нажмите тот же класс обратно с дополнительной информацией через второе событие.

Это должно напоминать шаблон MVP.

3 голосов
/ 11 января 2011

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

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

0 голосов
/ 11 января 2011

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

0 голосов
/ 11 января 2011

Да. Потому что это означает, что ваш бизнес-объект просто не является бизнес-объектом.

Используйте шаблон MVVM и поместите логику в модель представления.

0 голосов
/ 11 января 2011

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

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