Шаблони проєктування (MVC, Factory, Facade, Observer, Strategy тощо)
Розділ: Інженерія систем і програмного забезпечення
📌 Про що ця тема
Шаблони проєктування (design patterns) — це перевірені типові рішення повторюваних задач при розробці програм. На іспиті перевіряють розуміння призначення основних шаблонів: який шаблон для якої проблеми застосовують, як вони класифікуються та як працює архітектура MVC. Ключове поняття — повторне використання готового архітектурного рішення, а не коду.
📖 Головне
• Шаблон — це опис структури класів/обʼєктів та їхньої взаємодії для розвʼязання типової проблеми. Це ідея, а не бібліотека.
• Три групи шаблонів: породжувальні (створення обʼєктів), структурні (компонування обʼєктів) і поведінкові (взаємодія та розподіл обовʼязків).
• Factory (Фабрика) — породжувальний. Створює обʼєкти без прямої вказівки їхнього конкретного класу. Клієнт просить «дай обʼєкт типу X», а фабрика вирішує, який саме клас створити. Полегшує заміну класів.
• Singleton (Одинак) — породжувальний. Гарантує, що в системі існує лише один екземпляр класу й дає до нього глобальну точку доступу (напр., одне зʼєднання з БД, одне налаштування).
• Facade (Фасад) — структурний. Надає спрощений єдиний інтерфейс до складної підсистеми. Клієнт працює з одним зручним обʼєктом замість багатьох складних.
• Adapter (Адаптер) — структурний. Перетворює інтерфейс одного класу на інший, щоб несумісні частини могли працювати разом.
• Observer (Спостерігач) — поведінковий. Обʼєкт-субʼєкт сповіщає підписників про зміну свого стану. Коли дані змінюються — усі «спостерігачі» автоматично оновлюються (підписка/розсилка).
• Strategy (Стратегія) — поведінковий. Виділяє групу взаємозамінних алгоритмів в окремі класи, які можна підставляти й міняти під час виконання, не змінюючи основний код.
• MVC (Model–View–Controller) — архітектурний шаблон, що розділяє застосунок на три частини: Model (дані й бізнес-логіка), View (відображення для користувача), Controller (обробка введення, звʼязок між Model і View). Мета — розділення обовʼязків.
🔢 Як це працює на прикладі
Приклад MVC для інтернет-крамниці:
• Model — клас «Товар»: зберігає назву, ціну, кількість, працює з базою даних.
• View — HTML-сторінка, що показує список товарів користувачу.
• Controller — отримує натискання «Купити», оновлює Model (зменшує кількість), потім оновлює View.
Приклад Strategy: програма рахує вартість доставки. Є алгоритми «Курʼєр», «Пошта», «Самовивіз». Кожен — окремий клас зі своїм методом розрахунку. Користувач обирає спосіб — підставляється відповідна стратегія, решта коду не змінюється.
⚠️ Типові помилки
• Плутають Factory і Singleton: Factory створює РІЗНІ обʼєкти, Singleton гарантує ЄДИНИЙ екземпляр.
• Вважають, що у MVC Controller зберігає дані — дані зберігає лише Model.
• Плутають Facade і Adapter: Facade спрощує складне, Adapter узгоджує несумісне.
• Вважають Strategy і Observer однаковими: Strategy про вибір алгоритму, Observer про сповіщення про зміни.
• Думають, що шаблон — це готовий код; насправді це схема рішення.
🎯 Що завчити напамʼять
• Три групи: породжувальні, структурні, поведінкові.
• MVC = Model (дані), View (відображення), Controller (керування).
• Factory — створення, Singleton — один екземпляр, Facade — спрощений інтерфейс, Observer — підписка/сповіщення, Strategy — взаємозамінні алгоритми.
🧠 Перевір себе
1. До якої групи належить шаблон Observer?
2. Яка частина MVC відповідає за бізнес-логіку й роботу з даними?
3. Який шаблон гарантує єдиний екземпляр класу?
4. Чим відрізняється Facade від Adapter?
Відповіді: 1 — поведінкові (сповіщення підписників про зміну стану); 2 — Model; 3 — Singleton; 4 — Facade спрощує доступ до складної підсистеми, Adapter узгоджує два несумісні інтерфейси.