Получение данных из составного элемента управления - шаблон посетителя? - PullRequest
1 голос
/ 19 декабря 2008

У меня есть довольно сложные формы, которые должны быть настроены веб-дизайнерами.

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

Элемент управления верхнего уровня - это просто контейнер, и внутри него содержатся разделы формы. SubControls реализуют общие интерфейсы (то есть NeptuneAddressControl и MarsAddressControl реализуют IPlanetaryAddressControl)

В конечном итоге все должно быть в одной базе данных.

Вместо того, чтобы выставлять каждое поле дочерних элементов управления в качестве подпорки в родительском элементе, я думаю о реализации Посетителя, который будет охватывать дерево элементов управления и заполнять Объект Entity, который затем сможет записывать в базу данных.

Это правильный подход или я далеко от базы?

1 Ответ

1 голос
/ 31 декабря 2008

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

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

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

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

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