Page 35 - 4252
P. 35
Фабричний метод (Factory Method) або Віртуальний конструктор
(Virtual Constructor) – Go
Проблема Визначити інтерфейс для створення об'єкту, але залишити під-
класам рішення про те, який клас інстанціювати, тобто, делегува-
ти інстанціювання підкласами.
Рішення Абстрактний клас "Творець" оголошує Фабричний Метод,
який повертає об'єкт типу "Продукт" (абстрактний клас, що ви-
значає інтерфейс об'єктів, що створюються фабричним методом).
"Творець" також може визначити реалізацію за замовчуванням
Фабричного Методу, який повертає "КонкретнийПродукт".
"КонкретнийТворець" заміщає Фабричний Метод, який повертає
об'єкт "КонкретнийПродукт". "Творець" "покладається" на свої
підкласи у визначенні Фабричного Методу, що повертає об'єкт
"КонкретнийПродукт". Даний патерн позбавляє проектувальника
від необхідності вбудовувати в код залежать класів від програми.
Однак при застосуванні даного патерну виникає додатковий рі-
вень підкласів.
Питання для самоконтролю
Що таке структурні патерни класів/об'єктів ?
Що таке Патерни проектування поведінки (Behavioral)?
Що таке Приклади поведінкових патернів класів/об'єктів ?
Що таке Стан (State) – Go ?
Що таке Одинак (Singleton) – Go ?
Дайте означення віртуального конструктора ?
34