Свойства, специфичные для пользовательского интерфейса объекта - PullRequest
1 голос
/ 20 февраля 2009

Предположим, у меня есть простой класс с именем Category, со свойствами Id, Name. Я хочу показать их как меню в пользовательском интерфейсе. Но на логику отображения также влияет третье свойство, IsSelected, которое я должен учитывать при рендеринге меню.

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

List<Category> list = CategoryLogic.GetCategories();

до

List<UICategoryItem> list = UICategoryLogic.GetCategories(intSelected);

Это кажется излишним для такой мелочи, но это единственный способ, о котором я могу думать. Я могу уменьшить количество нового кода, необходимого с помощью наследования, но я по-прежнему ищу как минимум 2 новых файла кода (UICategoryLogic и UICategoryItem), которые могут потребовать изменения в случае изменения категории.

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

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

Ответы [ 2 ]

1 голос
/ 20 февраля 2009

«Общий шаблон» для разработки пользовательского интерфейса: MVC - Model View Controller. Пусть ваш объект Category будет частью модели, а ваши элементы управления UI (комбинированные списки и т. Д.) Будут представлениями, у них есть такие понятия, как состояние выбора, контроллеры - это то, что выполняет входы логического отображения элементов управления UI для изменения объектов вашей модели. и, при необходимости, обновление объектов вида для отражения изменений.

1 голос
/ 20 февраля 2009

Откажись от наследства kool-aid, состав твой друг. Сохраняйте свой класс Category и инкапсулируйте его в нечто более подходящее для ваших целей.

...