Ответ 1
Предполагая, что методом "instance factory" вы действительно говорите о методе GoF "factory", термин "статический метод factory" описан Джошуа Блох в его книге "Эффективная Java". Гуглинг вокруг я достиг на этих сайтах:
- Factory Метод: http://sourcemaking.com/design_patterns/factory_method
- Статический factory Метод: http://www.informit.com/articles/article.aspx?p=1216151
Надеюсь, что это помогло немного изменить ситуацию.
Следуя совету Марво:
-
Factory Метод, как указано в GoF: "Определите интерфейс для создания объекта, но пусть подклассы решают, какой класс должен быть создан. factory Метод позволяет кластеру отложить экземпляр к подклассам". Пример (код Java):
public abstract class Product { ... } public class ConcreteProduct extends Product { ... } public abstract class Creator { public void anOperation() { ... product = factoryMethod(); ... } public abstract Product factoryMethod(); } public class ConcreteCreator extends Creator { public Product factoryMethod() { return new ConcreteProduct(); } }
-
Статический factory Метод, как указано в Эффективной Java: "Класс может предоставлять общедоступный статический метод factory, который является просто статическим методом, возвращающим экземпляр класса. (...) Преимущество статических методов factory заключается в том, что в отличие от конструкторов у них есть имена. (...) Второе преимущество статических методов factory заключается в том, что в отличие от конструкторов им не требуется создавать новый объект каждый раз при вызове theyre. (...) Третьим преимуществом статических методов factory является то, что в отличие от конструкторов они могут возвращать объект любого подтипа возвращаемого типа. (...) Основной недостаток предоставления только статических factory методов что классы без публичных или защищенных конструкторов нельзя подклассифицировать". Пример (код Java):
public class Boolean { ... public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE; } ... }