Какое хорошее название для класса, который создает фабрики? (FooFactoryFactory звучит глупо ИМО) - PullRequest
17 голосов
/ 02 февраля 2010

Я точно не помню, является ли это обычным шаблоном, но у меня есть класс (шаблон Factory Method), в котором есть метод для создания других классов (шаблон Abstract Factory) в зависимости от параметра enum:

public class FooFactoryFactory {
   public FooFactory createFactory (FooFactoryType type) {
      switch (type) {
         case AFoo:
            return new AFooFactory ();
            break;
         case BFoo:
            return new BFooFactory ();
            break;
         default:
            throw new RuntimeException ("...");
      }  
   }
}

public interface FooFactory {
   Foo createFoo ();
   FooItem createFooItem ();
}

FooFactory имеет несколько реализаций, а также интерфейс Foo и интерфейс FooItem (общий шаблон Abstract Factory).

Итак, как переименовать FooFactoryFactory?

Может быть, FooFactoryCreator?(Думайте об этом имени во время написания этого вопроса).ИМХО это приятно, как ты думаешь?

Ответы [ 2 ]

16 голосов
/ 02 февраля 2010
  • FooFactoryCreator
  • FooFactoryProvider

Но вы, возможно, захотите переименовать свои фабрики, скажем, для строителей. Взгляните на javax.xml.parsers.DocumentBuilderFactory, который вызывает DocumentBuilder экземпляров, которые, в свою очередь, производят Document s

Глядя на пример DocumentBuilderFactory, возникает еще одна опция:

  • есть аннотация FooFactory
  • сделать метод static newInstance() там (с параметрами)
  • let newInstance() возвращает соответствующую реализацию FooFactory
4 голосов
/ 02 февраля 2010

В Создание и уничтожение объектов Java: Часть 1 , автор предлагает: «Одно из преимуществ статических фабричных методов заключается в том, что, в отличие от конструкторов, они имеют имена». - Джошуа Блох . Вы можете получить некоторые идеи из статьи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...