У чому відмінність 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 Method | Abstract Factory |
|---|---|---|
| Масштаб | Один продукт | Сімейство продуктів |
| Реалізація | Успадкування і перевизначення методу | Комбінація фабричних методів |
| Гнучкість | Створення одного типу об'єктів | Гарантія сумісності між кількома об'єктами |
| Приклад | createTransport() -> Truck | createGUI() -> Button + Checkbox |
Висновок: Factory Method вирішує "який саме об'єкт створити", Abstract Factory вирішує "які сумісні об'єкти створити разом".
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.