Добрый день.
Я пытаюсь выяснить, какой шаблон я могу использовать для какой-то новой разработки, но я увязаю. Сначала я подумал о шаблоне Factory, но потом, возможно, о шаблоне Builder, но ни один из них не подходит идеально.
Моя проблема в том, что базовый класс Product в шаблонах не является универсальным. Кажется, что все в шаблонах Factory и Builder требует, чтобы базовые продукты были в точности одинаковыми.
Например (действительно тупой пример):
public class ProductBase
{
public int x;
public int y;
}
public class ProductA : ProductBase
{
public int z;
}
public class ProductB : ProductBase
{
public int a;
}
Я думал, что могу использовать фабричный метод для создания продукта и возврата его вызывающей стороне, а затем просто заставить вызывающую сторону установить уникальные данные о продукте, как только я его получу, но для этого требуется приведение класса продукта к определенному типу, чтобы установить конкретные данные типа. Однако мне все это кажется подозрительным, потому что, если я уже знаю, какой тип мне нужен, неужели я просто усложняю ситуацию шаблоном?
В любом случае, любые рекомендации относительно того, какой подход можно использовать здесь, будут приветствоваться. В конечном счете, я ищу некоторую модификацию этих шаблонов (или вообще другую), чтобы разрешить неуниверсальные продукты. Или, может быть, установка данных о типе продукта после создания с помощью шаблона не так уж и зла?
ОБНОВЛЕНИЕ: я должен был упомянуть, что мне нужно установить данные для конкретного типа (z или a) во время выполнения, поскольку они передаются через веб-форму. Таким образом, я не могу предоставить Factory или Builder создание полного экземпляра, мне все еще нужен какой-то способ установки данных постфактум (или во время создания экземпляра, но, похоже, это не имеет хорошего универсального решения).
z
иa
или клиент может запрограммироватьProductBase
? - person Steven   schedule 21.09.2011