Это все еще считается Фабрикой, если объекты, возвращаемые Фабрикой, являются статическими? - PullRequest
2 голосов
/ 10 июня 2009

Когда мое приложение запускается, ему нужно получить экземпляр правильного класса DAL (в настоящее время их 4) в зависимости от того, какой пользователь вошел.

Это все еще считается "фабричным" шаблоном, если вместо того, чтобы создавать экземпляры этих классов DAL, я просто возвращаю правильный статический экземпляр этого? У меня нет необходимости постоянно создавать эти объекты, поскольку все пользователи могут делиться ими.

Psuedocode:

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 голосов
/ 10 июня 2009

Небольшое уточнение вашей терминологии. Объекты не являются статичными, просто ссылки. Объекты - это экземпляры, которые имеют хотя бы одну статическую ссылку. Когда вы возвращаете объект, вы возвращаете просто ссылку на этот объект. Он не имеет ни малейшего представления о том, что в каком-то другом месте его держит статическое электричество.

Но да, это действительный заводской шаблон.

2 голосов
/ 10 июня 2009

На самом деле это был бы шаблон "Абстрактной фабрики".

1 голос
/ 10 июня 2009

Фабричный шаблон - это, по сути, абстракция (в общем смысле термина). Даже если вы возвращаете статические объекты, вы все равно добавляете слой абстракции, который хорош и должен рассматриваться как часть фабричного шаблона в целом.

0 голосов
/ 10 июня 2009

Это будет фабрика-синглтон.

...