2009-02-20 2 views
1

Допустим, у меня есть простой класс под названием Категория, с идентификаторами свойств, именем. Я хочу показать их как меню в пользовательском интерфейсе. Но на логику отображения также влияет третье свойство IsSelected, которое я должен учитывать при создании меню.Специфичные свойства пользовательского интерфейса для объекта

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

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

в

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

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

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

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

+0

опечатка люкс -> костюм – Tom

ответ

1

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

1

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