Я не помню, точно это общий шаблон, но у меня есть класс (Шаблон "фабричный метод"), который имеет метод для создания других классов (Шаблон "абстрактная фабрика") в зависимости от перечислимого параметра:
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 (общий Шаблон "абстрактная фабрика").
Так, как переименовать FooFactoryFactory?
Возможно, FooFactoryCreator? (Думайте об этом имени во время записи этого вопроса). По моему скромному мнению, хорошо, как Вы думаете?
FooFactoryCreator
FooFactoryProvider
Но вы можете захотеть переименовать свои фабрики, скажем, в конструкторы. Взгляните на javax.xml.parsers.DocumentBuilderFactory
, который производит экземпляры DocumentBuilder
, которые, в свою очередь, создают Document
s
Просмотр DocumentBuilderFactory
пример, возникает другой вариант:
FooFactory
static newInstance ()
метод (с параметрами) newInstance ( )
вернуть соответствующую реализацию FooFactory
в Создание и уничтожение объектов Java: часть 1 , автор предлагает: «Одним преимуществом статических фабричных методов». Это, в отличие от конструкторов, у них есть имена ». - Джошуа Блох . Вы можете получить некоторые идеи из статьи.