У меня есть StaffFactory для получения объектов персонала различными способами, но у меня также есть некоторые методы настройки, чтобы определить, какой источник данных использовать.Базовый класс для управления заводскими классами
class StaffFactory
{
private const string DefaultDbSourceName = "Production";
private string dbSourceName;
#region Factory Management
private static Dictionary<string, StaffFactory> staffFactories = new Dictionary<string,StaffFactory>();
public static StaffFactory GetInstance()
{
return GetInstance(DefaultDbSourceName);
}
public static StaffFactory GetInstance(string dbSourceName)
{
if (!staffFactories.ContainsKey(dbSourceName))
{
staffFactories.Add(dbSourceName, new StaffFactory(dbSourceName));
}
return staffFactories[dbSourceName];
}
private StaffFactory(string dbSourceName)
{
this.dbSourceName = dbSourceName;
}
#endregion Factory Management
#region Factory Methods
public Staff ById(int id) { ... }
public IList<Staff> ByName(string name) { ... }
...
#endregion Factory Methods
}
Как я иду, чтобы создать свой следующий завод, я понимаю, все это логика управления будет оставаться такими же независимо от того, какого типа завода для. Поэтому я думаю, что я создаю базовый класс Factory или Factory, в котором находится эта логика, а затем объявляю выше с помощью class StaffFactory : Factory<Staff> { ... }
или что-то в этом роде, но я рисую полные пробелы о том, как бы я это сделал. Внедрить ли это с использованием дженериков и т. Д.
Может ли кто-нибудь указать мне правильное направление?
Вы пытаетесь реализовать Factory, Singelton или Repository? –