2009-09-04 2 views
0

То, что я сейчас ищу, представляет собой набор классов, полученных из общего базового класса. Большинство, но не всех, классов требуют некоторых входных параметров, которые получают через модальные диалоги. Эти диалоги настраиваются и выполняются в конструкторе классов. Пока диалог не завершен, объект не будет полностью сконструирован. Какие проблемы могут возникнуть в результате задержки выполнения конструктора?Вызов временных функций из конструктора

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

ответ

4

Нет проблем, которые могут возникнуть в отношении языка. Конструктору разрешено принимать столько, сколько ему нравится.

Если это может быть проблемой, это может привести к путанице. Будет ли программист, использующий класс, знать, что конструктор блокирует поток в течение длительного времени?

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

4

Что делают эти классы? Если их нет только для управления пользовательским интерфейсом, у вас есть проблема с разделением проблем ... сбор данных пользователя должен быть отделен от классов, которые обрабатывают этот ввод.

1

Я думаю, что это правильный выбор дизайна. Имеет смысл иметь класс под названием «UserInput», который будет полностью сконструирован после того, как пользователь имеет.

Он также вызывает жесткую связь с методом ввода данных - интерактивный: вы не сможете использовать эти классы с данными макета, например.

Поэтому, если вам нужна гибкость в выборе, отделите ввод данных от бизнес-логики. Если вы хотите готовые к использованию объекты, попросите пользователя ввести его во время строительства.

Смежные вопросы