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
   42   43   44   45   46   47   48   49   50   51   52