Что такое хорошее имя для класса, которое создает фабрики? (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
Ответ 2
В Создание и уничтожение объектов Java: часть 1, автор предлагает: "Одним из преимуществ статических методов factory является то, что, в отличие от конструкторы, у них есть имена". - Джошуа Блох. Вы можете получить некоторые идеи из статьи.