Page 100 - 4190
P. 100

йнято.
                  Якщо проектувати додаток класів важко, інструментальну бібліо-
            теку ще важче, то проектування каркасів – завдання найважче. Прое-
            ктувальник каркасів розраховує, що єдина архітектура буде придатна

            для усіх додатків даної предметної області. Будь-яка несуттєва зміна
            дизайну каркасу приведе до втрати його переваги, оскільки, основний
            вклад каркасу в додаток – це визначена ним архітектура. Тому каркас

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

            слабкої зв’язаності, тому що найменша зміна каркасу приведе до ці-
            лої хвилі модифікацій.
                  Розглянуті вище проблеми проектування актуальні якраз для кар-

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

            ваних каркасах можна виявити декілька різних патернів проектуван-
            ня. Патерни допомагають адаптувати архітектуру каркасу до багатьох
            додатків без повторного проектування.

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

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

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

            між ними і чи є вона взагалі. Отже, існують три основні відмінності:
                  1) патерни проектування більш абстрактні, ніж каркаси. У код
            можуть бути включені цілі каркаси, але тільки екземпляри патернів.

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

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

                                                             100
   95   96   97   98   99   100   101   102   103   104   105