Что такое хорошее имя для класса, которое создает фабрики? (FooFactoryFactory звучит глупо)

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

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 (общий абстрактный шаблон Factory).

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

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

Ответы

Ответ 1

  • FooFactoryCreator
  • FooFactoryProvider

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

В примере DocumentBuilderFactory возникает другая опция:

  • имеют абстрактный FooFactory
  • сделать там static newInstance() метод (с параметрами)
  • let newInstance() возвращает соответствующую реализацию FooFactory