Page 44 - 4190
P. 44

користати як прототип, так і абстрактну фабрику. У інших ситуаціях
            породжуючі  шаблони  доповнюють  один  одного.  Так,  застосовуючи
            патерн-будівельник, можна використати інші шаблони для вирішення
            питання про те, які компоненти треба будувати, а прототип часто ре-

            алізується разом з патерном- сингелтоном. Породжуючі шаблони тіс-
            но пов'язані один з одним, їх розгляд доцільніше проводити спільно,
            щоб краще було видно їх схожості і відмінності.

                  Розглянемо найбільш вживані патерни проектування, які викори-
            стовують під час програмування
                  Патерн Builder
                  Патерн Builder (будівельник) може допомогти у вирішенні таких

            завдань:
                  У системі можуть існувати складні об'єкти, створити які за одну
            операцію важко або неможливо. Потрібна поетапна побудова об'єктів

            з контролем результатів виконання кожного етапу.
                  Дані  повинні  мати  декілька  представлень.  Наведемо  класичний
            приклад. Нехай є деякий початковий документ у форматі RTF (Rich

            Text  Format),  в  загальному  випадку  текст,  що  містить,  графічні  зо-
            браження  і  службову  інформацію  про  форматування  (розмір  і  тип
            шрифтів, відступи  та ін.).  Якщо  цей  документ  у  форматі  RTF  пере-

            творити  в  інші  формати  (наприклад,  Microsoft  Word  або  простий
            ASCII-текст), то отримані документи і будуть представленнями поча-
            ткових даних.
                  Патерн  Builder  відділяє  алгоритм  поетапного  конструювання

            складного  продукту  (об'єкту)  від  його  зовнішнього  представлення
            так, що за допомогою одного і того ж алгоритму можна отримувати
            різні  представлення  цього  продукту.  Поетапне  створення  продукту

            означає  його  побудову  за  частинами.  Після  того  як  побудовано
            останню частину, продукт можна використати.
                  Для цього патерн Builder визначає алгоритм поетапного створен-
            ня продукту в спеціальному класі Director (розпорядник), а відповіда-

            льність за координацію процесу зборки окремих частин продукту по-
            кладає на ієрархію класів Builder. У цій ієрархії базовий клас Builder
            оголошує інтерфейси для побудови окремих частин продукту, а від-

            повідні  підкласи  ConcreteBuilder  їх  реалізують  відповідним  чином,
            наприклад,  створюють  або  отримують  потрібні  ресурси,  зберігають
            проміжні результати, контролюють результати виконання операцій.

                  UML-діаграма  класів  патерну  Builder  представлена  на  рисунку
            5.1.

                                                              44
   39   40   41   42   43   44   45   46   47   48   49