Предположим, у меня есть простой класс с именем Category, со свойствами Id, Name. Я хочу показать их как меню в пользовательском интерфейсе. Но на логику отображения также влияет третье свойство, IsSelected, которое я должен учитывать при рендеринге меню.
Существует множество различных способов достижения этого, например, наследование или использование частичных классов. Но действительно ли необходимо, чтобы мой код изменился с чего-то вроде
List<Category> list = CategoryLogic.GetCategories();
до
List<UICategoryItem> list = UICategoryLogic.GetCategories(intSelected);
Это кажется излишним для такой мелочи, но это единственный способ, о котором я могу думать. Я могу уменьшить количество нового кода, необходимого с помощью наследования, но я по-прежнему ищу как минимум 2 новых файла кода (UICategoryLogic и UICategoryItem), которые могут потребовать изменения в случае изменения категории.
Не говоря уже о ситуации, когда мой пользовательский интерфейс по-разному использует категории в разных местах, каждый из которых может иметь свои уникальные свойства. Я мог бы быстро получить кучу разных видов категорий для каждой цели, и это может усложнить выполнение кода. Также я мог бы использовать что-то вроде наборов данных, которые не могут быть легко унаследованы, или я использую ORM, который затрудняет наследование и расширение классов.
Существует ли общий шаблон для подобных ситуаций, когда мне нужно расширить базовый элемент данных для удовлетворения моих потребностей?