Skip to main content

У чому відмінність Factory Method від Abstract Factory?

Factory Method і Abstract Factory - обидва породжувальні патерни, але вони вирішують різні задачі рівня масштабу і абстракції.


1. Рівень задачі

  • Factory Method - створює один об'єкт певного типу, вибір якого визначається підкласом.
  • Abstract Factory - створює ціле сімейство пов'язаних об'єктів, забезпечуючи їхню сумісність між собою.

Приклад:

  • Factory Method може створювати лише кнопку (WindowsButton або MacButton).
  • Abstract Factory створює всю групу елементів інтерфейсу (кнопку, меню, вікно) під конкретну ОС.

2. Структура

  • Factory Method - це один метод, який підкласи перевизначають.
  • Abstract Factory - це інтерфейс або клас, що містить набір фабричних методів, по одному для кожного продукту сімейства.

3. Зв'язок між ними

Abstract Factory часто реалізується за допомогою кількох Factory Method усередині. Тобто Abstract Factory - це надбудова, що об'єднує кілька фабричних методів.


4. Приклад

Factory Method:

java
abstract class Dialog { abstract Button createButton(); }

Abstract Factory:

java
interface GUIFactory { Button createButton(); Checkbox createCheckbox(); }

5. Підсумок

КритерійFactory MethodAbstract Factory
МасштабОдин продуктСімейство продуктів
РеалізаціяУспадкування і перевизначення методуКомбінація фабричних методів
ГнучкістьСтворення одного типу об'єктівГарантія сумісності між кількома об'єктами
ПрикладcreateTransport() -> TruckcreateGUI() -> Button + Checkbox

Висновок: Factory Method вирішує "який саме об'єкт створити", Abstract Factory вирішує "які сумісні об'єкти створити разом".

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.