Фабрика, абстрактная фабрика и метод фабрики

Я действительно смущен этими тремя условиями.

Мое понимание то, что:

  • в Шаблоне "фабрика" нет никакой конкретной фабрики. Фабрика создает новые объекты согласно параметрам.

  • в Шаблоне "абстрактная фабрика" существует несколько конкретных фабрик. Клиент должен создать различные конкретные фабрики явно.

Это правильно?

Каковы другие различия?

Кроме того, каков Шаблон "фабричный метод"? Это - то же как Шаблон "фабрика"?

42
задан Dave Schweisguth 10 February 2016 в 04:34
поделиться

3 ответа

Банда из четырех «шаблонов проектирования; элементы многоразового объектно-ориентированного программного обеспечения» содержит две записи, «абстрактный фабрика» (виртуальный конструктор «АКА») и «Фабрика» ... Я не знаю о "бетонной фабрике". Я слышал срок, но никогда не дал это слишком много думать.

Фабричный метод

в «Factory Method» объект имеет способ, который отвечает за создание другого объекта. Общим примером является объектом документа JavaScript и создание объектов HTMLELEMENT :

var newDiv = document.createElement('div');

Это не отличный пример, хотя, так как важная часть фабричного метода является полиморфизм. Если бы я мог расширить документ , чтобы определить другой класс, который определяет другое CreateeEdeelement , это было бы основным материалом метода фабрики.

Абстрактная фабрика

Абстрактная фабрика предназначена для «обеспечения интерфейса для создания семейств связанных или зависимых объектов без указания бетонных классов.

типичный выпрямительный Пример книги - это фабрика виджета; обратно в тот день, когда был опубликован GOF, кроссплатформальная разработка GUI была немного хлопот, поэтому вы можете определить абстрактный класс Widget Widget.

Этот класс может иметь методы Createwindow , CreateButton , CreateScrollbar и т. Д. В свою очередь, несколько реализаций будут определены для получения виджетов или AWT Swing или AWT. Затем, в зависимости от конфигурации, другой класс будет Суммировано.

Приложение - бетонная фабрика

Я считаю, что бетонная фабрика представляет собой любую не абстрактную реализацию абстрактных фабричных или фабричных методов.

Итак, когда я пишу свое собственное обобщение документа который переопределяет CreateeEdeeEdeeEdeeDement , класс I CRE ATE - бетонная фабрика.

Аналогично, в то время как WidgetFactory будет абстрактным фабрикой, SwingWidgettactory будет бетонная фабрика.

39
ответ дан 26 November 2019 в 23:57
поделиться

Лучший способ учиться - это определенно читать. Взгляните на это: http://www.dofactory.com/Patterns/Patterns.aspx .

Фабричный метод откладывает создание объектов в подклассы. Это означает, что базовый класс/интерфейс определен, однако клиентский код не создает объект на основе этого интерфейса. Подклассы, реализующие интерфейс, оставляются для инициализации объекта.

Абстрактные фабрики можно найти здесь: http://www.dofactory.com/Patterns/PatternAbstract.aspx#_self2

На этом сайте уже есть хорошая информация. Следующая лучшая вещь - это проверка вики:

http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29

http://javadesign-patterns.blogspot.com/ - хорошее место для изучения шаблонов дизайна

.
4
ответ дан 26 November 2019 в 23:57
поделиться

ФАБРИЧНЫЙ ШАБЛОН: возвращает объекты одного семейства
АБСТРАКТНАЯ ФАБРИКА: возвращает объекты более чем одного семейства.

Таким образом, вы можете сказать, что Абстрактная фабрика содержит более одной фабрики

4
ответ дан 26 November 2019 в 23:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: