当我的应用程序启动时,它需要根据用户的登录情况获取正确的DAL类的实例(目前有4个)。某些用户正在从某些数据库中删除。
它是否仍被视为“工厂”模式,如果不是实例化那些DAL类的实例,我只返回它的正确静态实例?我不需要不断创建这些对象,因为所有用户都可以共享它们。
伪码:
public class RepositoryFactory
{
public static IRepository repoA = new FranksLumberRepo();
public static IRepository repoB = new LowesHardwareRepo();
public static IRepository repoC = new HackmansHardwareRepo();
public static IRepository repoD = new TomsHardwareRepo();
public IRepository createRepo(User currentUser)
{
switch(User.Store)
{
case FrankLumber:
return repoA;
case LowesHardware:
return repoB;
case Hackmans:
return repoC;
case TomsHardware:
return repoD;
default:
throw exception;
}
}
}
答案 0 :(得分:4)
略微澄清您的术语。对象不仅仅是引用的静态。对象是具有至少一个静态引用的实例。当您返回对象时,您只返回对该对象的引用。它不知道在其他一些区域存在静态。
但是,这是一个有效的工厂模式。
答案 1 :(得分:2)
实际上,这将是“抽象工厂”模式的情况。
答案 2 :(得分:1)
工厂模式本质上是一种抽象(在术语的一般意义上)。即使你返回静态对象,你仍然会添加一个抽象层,这很好,一般应该被认为是工厂模式的一部分。
答案 3 :(得分:0)
这将是一个单身工厂。