2

当我的应用程序启动时,它需要根据登录的用户获取正确 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;
        }

    }
}
4

4 回答 4

4

稍微澄清一下您的术语。对象不是静态的,只是引用。对象是具有至少一个静态引用的实例。当您返回对象时,您只是返回对该对象的引用。它不知道在其他一些区域有一个静电。

但是,是的,这是一个有效的工厂模式。

于 2009-06-10T03:40:02.700 回答
2

实际上,这将是“抽象工厂”模式的一个案例。

于 2009-06-10T03:07:30.087 回答
1

工厂模式本质上是一种抽象(一般意义上的术语)。即使您返回静态对象,您仍然会添加一个抽象层,这很好,通常应该被视为工厂模式的一部分。

于 2009-06-10T03:23:42.503 回答
0

这将是一个单身工厂。

于 2009-06-10T03:36:05.383 回答