Статический фабричный метод ИЛИ Метод создания - PullRequest
2 голосов
/ 06 апреля 2009

Меня интересует правильное определение для такой конструкции:

class A {
 public static A create() {
    return new A();
 }

 private A() {
 }
}

В Действующая Java (Элемент 1) и в Статья в Википедии Я обнаружил, что это называется Статический фабричный метод (что-то вроде Фабричный метод ).

Но во время чтения Рефакторинг к шаблонам (Глава 6) я встретил ту же конструкцию, называемую Метод создания . Также есть примечание, что его не следует путать с шаблоном Factory Method .

Где правда?

Ответы [ 4 ]

2 голосов
/ 06 апреля 2009

Прочитайте это обсуждение Фабричного метода.

FactoryMethodPattern отличается от FactoryMethod или CreationMethod .

1 голос
/ 29 января 2012

Метод создания - это статический или нестатический метод, который создает экземпляр класса. Фабричный метод - это метод, определенный и реализованный в иерархии классов, и его создание носит полиморфный характер.

1 голос
/ 06 апреля 2009

Один из подходов заключается в вызове методов без параметров методов создания и параметризации (например, с помощью перечисления) - фабричных методов . В том смысле, что фабрика более мощная и может создавать объекты разных типов.

Если вы используете метод без параметров, вы должны решить где-либо еще, какой метод класса вызвать. С параметризованным методом вы передаете эту логику самому методу. Таким образом, последний ( factory ) также сам решает, какой объект класса создать.

0 голосов
/ 06 апреля 2009

Ну, терминология часто варьируется между авторами, поэтому я бы не стал сильно беспокоиться об этом.

Я полагаю, однако, что «Refactoring to Patterns» предостерегает от вызова этого «фабричного метода», поскольку существует фабричный шаблон метода . Поскольку шаблон фабричного метода - это больше, чем просто фабричный метод, они предлагают другое имя, чтобы избежать путаницы.

Полагаю, вы могли бы также назвать это "простой статической фабрикой", но это немного многословно (и нестандартно).

...