Page 47 - 4190
P. 47
1. Система повинна залишатися розширюваною шляхом додаван-
ня об'єктів нових типів. Безпосереднє використання виразу new є не-
бажаним, оскільки в цьому випадку код створення об'єктів з вказів-
кою конкретних типів може вийти розкиданим по всьому програмно-
му додатку. Тоді такі операції як додавання в систему об'єктів нових
типів або заміна об'єктів одного типу на іншій будуть складними. Па-
терн Factory Method дозволяє системі залишатися незалежною як від
самого процесу породження об'єктів, так і від їх типів.
2. Заздалегідь відомо, коли треба створювати об'єкт, але невідо-
мий його тип.
Для того щоб система залишалася незалежною від різних типів
об'єктів, патерн Factory Method використовує механізм поліморфізму
– класи усіх кінцевих типів наслідують від одного абстрактного базо-
вого класу, призначеного для поліморфного використання. У цьому
базовому класі визначається єдиний інтерфейс, через який користу-
вач оперуватиме об'єктами кінцевих типів.
Для забезпечення відносно простого додавання в систему нових
типів патерн Factory Method локалізує створення об'єктів конкретних
типів у спеціальному класі-фабриці. Методи цього класу, за допомо-
гою яких створюються об'єкти конкретних класів, називаються фаб-
ричними. Існують два різновиди патерну Factory Method:
Узагальнений конструктор, коли в тому ж самому поліморфному
базовому класі, від якого наслідують похідні класи усіх створюваних
в системі типів, визначається статичний фабричний метод. Як пара-
метр у цей метод повинен передаватися ідентифікатор типу створю-
ваного об'єкту.
UML-діаграма класів патерну Factory Method «узагальнений
конструктор» зображена на рисунку 5.3.
Рисунок 5.3 – UML-діаграма класів патерну Factory Method «узагальнений
конструктор»
47