Шаблони проєктування (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 узгоджує два несумісні інтерфейси.

Перевірити себе на практиці

Прочитати — половина справи. Далі потрібні завдання цієї ж теми з розбором кожної відповіді: саме на них видно, чи справді тема закрита.