→ Пошук по сайту       Увійти / Зареєструватися
Знання Патерни

Структурні патерни — Structural patterns

Основним завданням структурних патернів є формування найбільш підходящої структури та взаємодії між класами для виконання певних завдань.
Якщо потрібно, щоб один об’єкт міг бути зрозумілим під іншим інтерфейсом, використовується Адаптер.

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

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

Для швидкої та динамічної можливості розширення існуючої функціональності, без зміни її носителя, можна скористатися Декоратором.

Якщо ваша система використовує багато об’єктів, що мають спільні дані, то такі дані можна винести та зробити загальнодоступними для економії пам’яті за допомогою патерну Легковаговик.

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

По матеріалам книги Андрія Будая "Дизайн патерни – просто, як двері". Матеріал розміщується за домовленістю з автором.
Робота представлена за умовами ліцензії Creative Commons Attribution-NonCommercial 3.0 Unported License.

6. Адаптер — Adapter

З деяких причин я дуже довго думав над тим, який же може бути хороший приклад для Адаптера. Можна навести приклад, коли є операції, які так і називаються: ОпераціяА та ОпА, або придумати складний приклад з великою кількістю методів і пропертів в класі, що адаптується...

7. Міст — Bridge

Уявімо, що ви володієте будівельною компанією, яка будує дачні будинки і житлові масиви. Зазвичай будівлі є двох типів — або з цегли, або з бетонних плит. Оскільки ви бос, то ви вирішили поділити всіх ваших робітників на команди, які будуть вміти робити одні і ті ж операції: BuildFoundation, BuildRoom, BuildRoof.

8. Компонувальник — Composite

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

9. Декоратор — Decorator

Розкажу я вам про лікаря, який мав хорошу й швидку машину Mercedes. Оскільки він лікар львівської лікарні, то по дорозі на роботу він часто попадає у корки, тому він спізнюється і це його виводить із себе, в результаті чого страждають... Хто? Його пацієнти.

10. Фасад — Facade

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

11. Легковаговик — Flyweight

Уявіть, що ви розробляєте якогось бота до онлайн-іграшки. У вас уже є веб-клієнт, який на кожну відповідь від сервера парсить HTML, у якому є записані юніти гри. Гра має близько 50 різних типів юнітів-тваринок, але коли ви розбираєте відповідь, то ви можете отримати цілу гору екземплярів однієї і тієї ж тваринки і ще цілу купу екземплярів інших тварюк.

12. Проксі — Proxy

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