Существует ли шаблон проектирования, в котором рассматривается, как управлять несколькими похожими объектами? - PullRequest
0 голосов
/ 16 июня 2009

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

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

Ответы [ 4 ]

0 голосов
/ 17 июня 2009

Проверьте шаблон Flyweight.

http://en.wikipedia.org/wiki/Flyweight_pattern

0 голосов
/ 16 июня 2009

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

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

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

0 голосов
/ 16 июня 2009

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

Это имеет некоторые преимущества и некоторые недостатки. Наиболее важные преимущества заключаются в том, что у вас есть бесконечно расширяемая система для отображения общих типов наборов данных по всему дереву классов, и вы получаете сильные стороны обычного композиционного стиля - изменение определения класса имеет тенденцию разбиваться на меньшие правки при меньших правках. , больше автономных единиц. Наиболее важный недостаток, вероятно, заключается в том, что вам приходится разбивать работу на множество подразделений, а не на одну «элегантную» (элегантность часто бывает иллюзией, когда речь идет о деревьях классов) абстракцию для класса и его визуального представления / сериализации.

0 голосов
/ 16 июня 2009

Мне очень повезло с динамическими вкладками. Идея состоит в том, что все общие поля находятся на главной вкладке. Все, что зависит от конкретного класса, отображается на вкладке с похожим именем.

Во время выполнения я решаю, какой это объект, и показываю соответствующие вкладки.

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