Вот проблема дизайна в псевдо-примере:
Это пользовательский элемент управления (UC) ASP.NET, который использует объект «Food» в качестве источника данных, и этот объект имеет свойство FoodType - «Veg» || "Nonveg".
Пользовательский элемент управления изменяет отображение пользовательского интерфейса в зависимости от свойства FoodType. В классе пользовательского элемента управления с выделенным кодом некоторые методы имеют одно и то же условие if / then / else: if (Food.FoodType == "Veg") ... else ...
Здесь я хотел бы использовать шаблон, подобный состоянию, чтобы класс пользовательского элемента управления с выделенным кодом содержал два внутренних / вложенных класса , т.е. класс "VegFood" и "NonvegFood " учебный класс. Теперь, допустим, класс NonvegFood будет содержать собственную реализацию логики.
Но, имея один интерфейс, два экземпляра класса (как вложенные), которые будут использоваться только в этом пользовательском элементе управления, могут быть перегружены. Кроме того, в UC отсутствует метод драйвера, в котором я могу вызывать связанные методы в одном блоке if, например, «DataBound» и «ItemCreated».
Тем не менее, возможно ли иметь шаблон типа State внутри класса UC? Возможно, два внутренних класса экземпляра внутри UC и как-нибудь, если я могу делегировать вызов одному из этих внутренних классов?
class UC : UserControl
{
class VegFood
{
string DisplayName
{
get
{
return "Rice";
}
}
}
class NonvegFood
{
string DisplayName
{
get
{
return "Chicken";
}
}
}
protected string DisplayName
{
get
{
return Instance.DisplayName;
}
}
/*********** MAGIC Property ****************/
private ? Instance
{
get
{
return ?;
}
}
}