Page 100 - 4190
P. 100
йнято.
Якщо проектувати додаток класів важко, інструментальну бібліо-
теку ще важче, то проектування каркасів – завдання найважче. Прое-
ктувальник каркасів розраховує, що єдина архітектура буде придатна
для усіх додатків даної предметної області. Будь-яка несуттєва зміна
дизайну каркасу приведе до втрати його переваги, оскільки, основний
вклад каркасу в додаток – це визначена ним архітектура. Тому каркас
має бути максимально гнучким і здатним до розширення. Оскільки
додатки так сильно залежать від каркасу, вони особливо чутливі до
зміни його інтерфейсу. В міру ускладнення каркасу додатки повинні
еволюціонуватися разом з ним. У результаті суттєво зростає значення
слабкої зв’язаності, тому що найменша зміна каркасу приведе до ці-
лої хвилі модифікацій.
Розглянуті вище проблеми проектування актуальні якраз для кар-
касу. Каркас, в якому вони вирішені за допомогою патернів, може
краще забезпечити високий рівень проектування і повторного вико-
ристання коду, ніж той, де патерни не застосовувалися. У відпрацьо-
ваних каркасах можна виявити декілька різних патернів проектуван-
ня. Патерни допомагають адаптувати архітектуру каркасу до багатьох
додатків без повторного проектування.
Додаткова перевага появляється тому, що разом з каркасом до-
кументуються ті патерни, які в ньому використовуються. У даному
випадку, той, хто знає патерни, здатний швидше розібратися в тон-
кощах каркасу. Патерни допомагають зручно структуризувати доку-
ментацію по каркасу. Підвищення якості документування важливе
для усіх типів програмного забезпечення, але для каркасів цей аспект
важливий подвійно. Для освоєння роботи з каркасом потрібно витра-
тити немало зусиль, і тільки після цього вони будуть приносити реа-
льну користь. Патерни можуть суттєво спростити задачу, явно виді-
ливши ключові моменти дизайну каркасу. Оскільки між патернами і
каркасами багато спільного, то часто виникає питання, в чому різниця
між ними і чи є вона взагалі. Отже, існують три основні відмінності:
1) патерни проектування більш абстрактні, ніж каркаси. У код
можуть бути включені цілі каркаси, але тільки екземпляри патернів.
Каркаси можна писати різними мовами програмування і не тільки ви-
вчати, але й безпосередньо виконувати і повторно використовувати.
На противагу цьому патерни проектування необхідно реалізовувати
кожний раз, коли в цьому виникає необхідність. Патерни пояснюють
наміри програміста, компроміси і наслідки вибраного дизайну.
100