Skip to main content

Як взаємодіють шари між собою?

У багаторівневій (шаруватій) архітектурі шари взаємодіють строго зверху вниз, тобто кожен шар звертається лише до сусіднього нижнього шару, не перестрибуючи через рівні.

Так забезпечується чиста структура, ізоляція відповідальності і простота зміни коду.


1. Напрямок взаємодії

javascript
Презентаційний шар ↓ Бізнес-логічний шар ↓ Шар даних (сховище)
  • Презентаційний шар (UI) відправляє запити в бізнес-логіку: наприклад, "створи замовлення", "покажи список клієнтів".
  • Бізнес-логіка обробляє правила, робить розрахунки і звертається до шару даних: "дістань ці записи з БД", "збережи результат".
  • Шар даних виконує операції з базою (SQL-запити, ORM і т. п.) і повертає дані назад нагору.

2. Зворотний зв'язок (відповідь угору)

Відповідь також рухається знизу вгору:

javascript
Шар даних → Бізнес-логіка → Презентаційний шар
  • Шар даних повертає "сирі" дані (наприклад, записи з таблиці).
  • Бізнес-логіка перетворює їх у бізнес-об'єкти чи готові результати.
  • Презентаційний шар відображає підсумок користувачу в потрібному вигляді.

3. Чому це важливо

Такий поділ:

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

4. Приклад на практиці

Користувач у вебзастосунку натискає "Купити":

  1. UI передає дію в бізнес-логіку (через контролер).
  2. Бізнес-логіка перевіряє баланс, застосовує знижку, створює замовлення.
  3. Логіка звертається до шару даних, щоб зберегти замовлення.
  4. Шар даних зберігає запис у БД і повертає ID.
  5. Бізнес-логіка підтверджує операцію.
  6. Презентаційний шар показує повідомлення "Покупку успішно оформлено".

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

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.