Абстрактна фабрика (шаблон проектування)
Матеріал з Вікіпедії — вільної енциклопедії.
Абстрактна фабрика (англ. Abstract Factory) - шаблон проектування, відноситься до класу твірних шаблонів.
Зміст |
[ред.] Призначення
Подає інтерфейс для утворення родин взаємозв'язаних або взаємозалежних об'єктів, не специфікуючи їх конкретних класів.
[ред.] Мотивація
[ред.] Застосовність
Слід використовувати шаблон Абстрактна фабрика коли:
- система не повинна залежати від того, як утворюються, компонуються та представляються вхідні до неї об'єкти;
- вхідні до родини взаємозв'язані об'єкти повинні використовуватися разом і необхідно забезпечити виконання цього обмеження;
- система повинна конфігуруватися однією з родин складаючих її об'єктів;
- треба подати бібліотеку об'єктів, розкриваючи тільки їх інтерфейси, але не реалізацію.
[ред.] Структура
- AbstractFactory – абстрактна фабрика:
- оголошує інтерфейс для операцій, що створюють абстрактні об'єкти-продукти;
- ConcreteFactory – конкретна фабрика:
- реалізує операції, що створюють конкретні об'єкти-продукти;
- AbstractProduct – абстрактний продукт:
- оголошує інтерфейс для типу об'єкту-продукту;
- ConcreteProduct – конкретний продукт:
- визначає об'єкт-продукт, що створюється відповідною конкретною фабрикою;
- реалізує інтерфейс AbstractProduct;
- Client – клієнт:
- користується виключно інтерфейсами, котрі оголошенні у класах AbstractFactory та AbstractProduct.
[ред.] Відносини
- Зазвичай під час виконання створюється єдиний екземпляр класу ConcreteFactory. Ця конкретна фабрика створює об'єкти продукти, що мають досить визначену реалізацію. Для створення інших видів об'єктів клієнт повинен користуватися іншою конкретною фабрикою;
- AbstractFactory передоручає створення об'єктів продуктів своєму підкласу ConcreteFactory.
[ред.] Джерела
- Design Patterns: Elements of Reusable Object-Oriented Software