Page 65 - 4190
P. 65
треба запобігти постійній прив'язці абстракції до реалізації.
Так, наприклад, буває коли реалізацію необхідно обрати під час ви-
конання програми;
як абстракції, так і реалізації повинні розширюватись новими
підкласами. У цьому разі шаблон Bridge дозволяє комбінувати різні
абстракції та реалізації та змінювати їх незалежно одне від одного;
зміни у реалізації не повинні впливати на клієнтів, тобто кліє-
нтський код не повинен перекомпілюватись;
треба повністю сховати від клієнтів реалізацію абстракції;
треба розподілити одну реалізацію поміж кількох об'єктів (мо-
жливо застосовуючи підрахунок посилань), і при цьому приховати
це від клієнта.
UML-діаграма класів патерну Bridge зображена на рисунку 6.9.
Рисунок 6.9 – UML-діаграма класів патерна Bridge
Патерни Bridge і Adapter мають схожу структуру, проте, цілі їх
використання різні. Якщо патерн Adapter застосовують для адапта-
ції вже існуючих класів у систему, то патерн Bridge використовується
на стадії її проектування.
Патерн Flyweight
Патерн Flyweight (Легковаговик) – використовується для ефекти-
вної підтримки (в першу чергу для зменшення затрат пам'яті) великої
кількості дрібних об'єктів.
Шаблон Flyweight використовує загальнодоступний легкий об'єкт
(flyweight, легковаговик), який одночасно може використовуватися у
великій кількості контекстів. Стан цього об'єкта поділяється на внут-
рішній, що містить інформацію, незалежну від контексту, і зовнішній,
який залежить або змінюється разом з контекстом легковаговика.
65