我有一个通过各种方式获取Staff对象的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
}
当我去创造我的下一个工厂,我知道这一切的管理逻辑是要保持相同的,不管是什么类型的工厂是。所以我认为我创建了一些基本的工厂或工厂类,它包含了逻辑,然后我用class StaffFactory : Factory<Staff> { ... }
或者其他的东西来声明上面的内容,但是我对如何去做这件事表示完全空白。是否使用泛型等实现它
任何人都可以指向正确的方向吗?
你想要实现一个Factory,Singelton或Repository吗? – 2012-02-17 19:20:20