Я хочу иметь какую-то фабрику (неважно, шаблон абстрактной фабрики или метод фабрики - похоже, что вторая - это конкретная форма первого. В моем случае должен быть создан только один объект). Дело в том, что создаваемые продукты хоть и похожи, но зависят от некоторых аргументов.
Как подготовить эту архитектуру в соответствии с шаблонами проектирования?
Текущий подход ниже
public abstract class Product {}
public class MyProduct : Product
{
public bool Abc { get; set; }
}
public class YourProduct : Product {}
public abstract class ProductFactory
{
//in some cases parameter not in use
public abstract Product Create(HelpData additionalData);
}
public class MyProductFactory : ProductFactory
{
public override Product Create(HelpData additionalData)
{
return new MyProduct {Abc = additionalData.SomethingImportantForMyProduct};
}
}
public class YourProductFactory : ProductFactory
{
//unused parameter
public override Product Create(HelpData additionalData)
{
return new YourProduct();
}
}
public class HelpData
{
public bool SomethingImportantForMyProduct { get; set; }
}
ИЗМЕНИТЬ
Я вижу, что это не ясно, поэтому повторю.
Обычно я не использую шаблоны только потому, что использую их. Но эта проблема, похоже, не пограничный случай. Выглядит довольно часто. Идя дальше, я считаю, что для этого есть подходящий шаблон проектирования, но я не уверен, какой именно. На данный момент похоже, что абстрактная фабрика не является правильным выбором.