19 / 19 / 14
Регистрация: 06.08.2009
Сообщений: 533
|
||||||
1 | ||||||
Как соединить паттрен стратегия с пользовательсикм интерфейсом02.10.2019, 17:00. Показов 1256. Ответов 8
Метки нет (Все метки)
Добрый день.
Имеется несколько вариантов поведения некого объекта. Все они реализуются через некий интерфейс, например ISignaler. Есть список этих объектов
У каждого сигналера есть набор параметров, которые надо дать пользователю редактировать. В интерфейсе пользователь будет выбирать сигналер и раскрывать его на редактирование где будет задавать параметры. Как правильно применить тут ООП и паттерны, чтобы было универсально и не зависело от визуальной платформы? (может быть и WinForm и WPF или даже WEB-интерфейс. Напрашивается сделать для каждого объекта-сигналера (или для группы сигналеров) специальный класс, который будет взаимодействовать между сигналером и визуальном компонентом. Естественно этот класс будет поддерживать спец. интерфейс с методом editб который будет вызываться когда юзер нажмет "редактировать". Но на сколько это правильно.
0
|
02.10.2019, 17:00 | |
Ответы с готовыми решениями:
8
Стратегия (как лучше) Как называется эта стратегия? Стратегия открытия СДЛ - как лучше? Множественность гибридов как стратегия эволюции и эволюционной селекции |
Модератор
3051 / 2193 / 459
Регистрация: 26.03.2015
Сообщений: 8,469
|
|
03.10.2019, 15:08 | 2 |
Непонятно, чего Вы хотите добиться. Форма редактирования для разных "визуальных платформ" будет разной.
Ещё более непонятно. Когда юзер нажмёт "редактировать" будет что-то происходить в интерфейсе. Например, открываться форма для редактирования. Каким образом сюда прикрутить класс с методом edit и за что этот класс будет отвечать? Сигналеры - это некие сущности? Для взаимодействия между сущностями и визуальными компонентами обычно используют специальный класс - презентер/контроллер/итп - и обычно такой класс один на экранную форму.
0
|
19 / 19 / 14
Регистрация: 06.08.2009
Сообщений: 533
|
||||||
03.10.2019, 16:26 [ТС] | 3 | |||||
Изначально я предполагал, что этот класс, например, прочитает значение полей объекта, значения которых пользователь будет менять. Присвоит, их, например, значениям Text разных TextBox. Если это bool, тогда значению Checked компонента CheckBox. Вызовет модальный диалог, потом поместит измеренные значения обратно в объект. Но как быть, если потом понадобиться переделать прогу на WPF или на ASP.NET? Сначала вроде как напрашиваются методы edit_read и edit_save.
Потом я подумал, что хорошо бы что-бы форма программно формировалась и написал нечто вроде:
По сути, да. Это реализация различных поведений. И у каждого сигналера могут быть свои наборы настраиваемых параметров.
0
|
Модератор
3051 / 2193 / 459
Регистрация: 26.03.2015
Сообщений: 8,469
|
|
03.10.2019, 19:21 | 4 |
Писать другой код. Код, присваивающий значения винформовским текстбоксам, в любом случае не подойдет для WPF или ASP.NET.
Вы хотите генерировать Представление в рантайме? Не думаю, что это позволит сэкономить время на разработку.
0
|
19 / 19 / 14
Регистрация: 06.08.2009
Сообщений: 533
|
||||||
04.10.2019, 08:27 [ТС] | 5 | |||||
А какие есть альтернативы? Создавать для каждого сигналера (или иного объекта) форму и прописывать алгоритм заполнения туда и обратно?
типа вот такого:
0
|
Модератор
3051 / 2193 / 459
Регистрация: 26.03.2015
Сообщений: 8,469
|
|
04.10.2019, 09:04 | 6 |
В .NET MVC есть специальные классы и методы расширения, которые делают это за Вас. Так же есть команда меню для автоматической генерации вью по модели (один раз во время разработки).
Так же можно использовать библиотеки типа AutoMapper. В винформз используется специальный механизм датабайнд. Достаточно при добавлении контрола на форму прописать ему значение соответствующего свойства.
1
|
19 / 19 / 14
Регистрация: 06.08.2009
Сообщений: 533
|
|
04.10.2019, 09:27 [ТС] | 7 |
0
|
4485 / 2720 / 485
Регистрация: 28.04.2012
Сообщений: 8,585
|
||||||||||||||||
04.10.2019, 23:36 | 8 | |||||||||||||||
В этом вашем single-dispatch-oop варианта два:
1) Делаешь «универсальную структуру данных» (можно повторить JSON или типа того), которую будет понимать любая визуальная платформа (пишешь под каждую адаптеры) и строить по ней динамически интерфейс для редактирования. Тогда твой ISignaler должен иметь метод(ы) типа
2) Делаешь общую «универсальную» обёртку поверх этих твоих визуальных платформ и используешь её в своём сигналере, типа такого:
0
|
Фрилансер
735 / 352 / 96
Регистрация: 05.05.2014
Сообщений: 2,621
|
||||||
12.10.2019, 22:36 | 9 | |||||
0
|
12.10.2019, 22:36 | |
12.10.2019, 22:36 | |
Помогаю со студенческими работами здесь
9
Как делать игру жанра, стратегия какой нужен редактор? Как работать с интерфейсом? Как создать программу с интерфейсом на с++? Как создаются библиотеки с интерфейсом? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |