Page 46 - 4190
P. 46

Для отримання різних представлень деяких даних за допомогою
            патерну Builder розпорядник Director повинен використати відповідні
            екземпляри  ConcreteBuilder.  Раніше  говорилося  про  завдання  пере-
            творення RTF-документів у документи різних форматів. Для його ви-

            рішення клас Builder оголошує інтерфейси для перетворення окремих
            частин  початкового  документу,  таких  як  текст,  графіка  та  керуюча
            інформація  про  форматування,  а  похідні  класи  WordBuilder,

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

            будуть порожніми.
                  За запитом клієнта розпорядник Director послідовно зчитуватиме
            дані з RTF-документа і передаватиме їх у вибраний раніше конвертор,

            наприклад, AsciiBuilder. Після того, як усі дані прочитані, отриманий
            новий  документ  у  вигляді  ASCII-тесту  можна  повернути  клієнтові.
            Слід зазначити, для того, щоб замінити формат початкових даних (тут

            RTF) на іншій, досить використати інший клас розпорядника.
                  Дуже часто базовий клас будівельника не лише оголошує інтер-
            фейс для побудови частин продукту, але і визначає нічого не роблячи

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

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

            не знає про його складові частини.
                  Патерн Builder має такі переваги:
                  1. Можливість контролювати процес створення складного продукту.
                  2. Можливість отримання різних представлень деяких даних.

                  Також він не позбавлений недоліків, ConcreteBuilder і створюва-
            ний  ним  продукт  жорстко  пов'язані  між  собою,  тому  при  внесенні
            змін  у  клас  продукту  швидше  за все  доведеться відповідним чином

            змінювати і клас ConcreteBuilder.
                  Патерн Factory Method
                  У системі часто вимагається створювати об'єкти самих різних ти-

            пів. Патерн Factory Method (фабричний метод) може бути корисний
            для вирішенні таких завдань:

                                                              46
   41   42   43   44   45   46   47   48   49   50   51