Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Чим Abstract Factory відрізняється від Factory Method?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**Abstract Factory** і **Factory Method** вирішують схожі задачі - інкапсулюють створення об'єктів, - але на різних рівнях абстракції: перший створює сімейство взаємопов'язаних об'єктів, другий - один об'єкт. **Ключове:** Factory Method відповідає на питання «який саме об'єкт створити?», Abstract Factory - «які пов'язані об'єкти створити разом?».Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення**Abstract Factory** і **Factory Method** вирішують схожі задачі, інкапсулюють створення об'єктів, але на **різних рівнях абстракції**. --- ### 1. **Масштаб задачі** - **Factory Method** створює **один об'єкт** (один тип продукту). - **Abstract Factory** створює **сімейство взаємопов'язаних об'єктів** (кілька типів, які мають працювати разом). **Приклад:** Factory Method створює одну кнопку (`Button`). Abstract Factory створює цілий набір елементів інтерфейсу - кнопку, чекбокс і вікно - сумісних між собою (наприклад, усі в стилі macOS). --- ### 2. **Реалізація** - Factory Method реалізується через **успадкування**: підкласи перевизначають фабричний метод. - Abstract Factory використовує **композицію**: містить **набір фабричних методів** для різних продуктів. ```java // Factory Method abstract class Dialog { abstract Button createButton(); } // Abstract Factory interface GUIFactory { Button createButton(); Checkbox createCheckbox(); } ``` --- ### 3. **Відношення між ними** Abstract Factory часто **будується на основі** кількох Factory Method. Кожен метод усередині Abstract Factory може бути фабричним методом для окремого типу продукту. --- ### 4. **Коли застосовувати** - **Factory Method:** коли потрібно дозволити підкласам вибирати, який об'єкт створити. - **Abstract Factory:** коли потрібно створювати цілі комплекти взаємопов'язаних об'єктів, не залежачи від конкретних реалізацій. --- ### 5. **Ключова відмінність** | Критерій | Factory Method | Abstract Factory | |---|---|---| | Масштаб | Один продукт | Сімейство продуктів | | Механізм | Успадкування | Композиція | | Розширення | Додавання нових типів через підкласи | Додавання нових сімейств продуктів | | Приклад | Створення кнопки | Створення GUI-комплекту | --- **Підсумок:** Factory Method відповідає на питання **«який саме об'єкт створити?»**, Abstract Factory - **«які пов'язані об'єкти створити разом?»**.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.