Page 95 - 4190
P. 95
яких успадкування не очевидне. В загальному можна стверджувати,
що розібратися в структурах часу виконання неможливо, якщо не ро-
зумієш специфіки патернів.
Проектування з врахуванням майбутніх змін. Системи необ-
хідно проектувати з врахуванням їх подальшого розвитку. Для прое-
ктування системи, стійкої до таких змін, необхідно передбачити, як
вона буде змінюватися протягом певного часу життєвого циклу. Як-
що при проектуванні системи не бралися до уваги можливості змін,
то є імовірність того, що в майбутньому її прийдеться повністю пере-
проектовувати. Таке перепроектування відображається на багатьох
частинах системи, тому непередбачені зміни завжди вимагають дода-
ткових витрат. Завдяки патернам систему завжди можна модифікува-
ти певним чином. Кожний патерн дозволяє змінити деякий аспект си-
стеми незалежно від усіх інших, таким чином, вона менше підлягає
впливу змін конкретного виду.
Розглянемо деякі типові причини перепроектування, а також па-
терни, які дають можливість цього уникнути:
1) при створенні об'єкта вказують клас. Вказівка імені класу
прив’язує до конкретної реалізації, а не до конкретного інтерфейсу.
Це може ускладнити зміну об’єкта в майбутньому. Щоб позбутися
такої проблеми, необхідно створювати об’єкти безпосередньо. Пате-
рни проектування: абстрактна фабрика, фабричний метод, прото-
тип;
2) залежність від конкретних операцій. Вказуючи конкретну
операцію, можна обмежити єдиний спосіб виконання запитів. Якщо
не включати запити в код, то буде простіше змінити спосіб задово-
лення запиту як на етапі композиції, так і на етапі виконання. Патер-
ни проектування: ланцюжок обов’язків, команда;
3) залежність від апаратної і програмної платформи. Зовнішні
інтерфейси операційної системи та інтерфейси прикладних програм
(API) різноманітні на різних апаратних і програмних платформах.
Якщо програма залежить від конкретної платформи, то її буде важко
перенести на інші. Навіть не «рідній» платформі таку програму важко
підтримувати. Тому при проектуванні систем так важливо обмежува-
ти платформенну залежність. Патерни проектування: абстрактна
фабрика, міст;
4) залежність від представлення або реалізації об’єкта. Якщо
клієнт «знає», як об’єкт представлений, зберігається або реалізова-
ний, то при зміні об’єкта може виявитися необхідним змінити і клієн-
95