Архітектура MVC (Model-View-Controller)
Архітектура MVC (Model-View-Controller) є одним із найпоширеніших шаблонів проєктування у розробці веб- та десктопних застосунків. Вона дозволяє розділити бізнес-логіку, дані та інтерфейс користувача, що спрощує підтримку, модифікацію та тестування коду.
🔹 Основні компоненти MVC
MVC складається з трьох основних частин:
1. Model (Модель) – робота з даними
- Відповідає за управління даними та бізнес-логіку.
- Здійснює збереження, оновлення, вилучення та обробку даних.
- Часто використовує ORM (Object-Relational Mapping) або працює безпосередньо з базою даних.
📌 Приклад Model (Python/Django):
from django.db import models
class Product(models.Model):
name = models.CharField(max_length=255)
price = models.DecimalField(max_digits=10, decimal_places=2)
description = models.TextField()
У цьому прикладі модель Product описує структуру таблиці в базі даних.
2. View (Представлення) – відображення даних
- Відповідає за інтерфейс користувача.
- Відображає дані з Model у зручному для користувача форматі.
- Часто використовує HTML, CSS, JavaScript, а також шаблонізатори.
📌 Приклад View (HTML/JavaScript у Flask):
<h1>{{ product.name }}</h1>
<p>Ціна: {{ product.price }} грн</p>
<p>Опис: {{ product.description }}</p>
Цей шаблон отримує дані від Controller та відображає їх у вигляді веб-сторінки.
3. Controller (Контролер) – логіка та маршрутизація
- Обробляє HTTP-запити та викликає відповідні методи Model.
- Передає дані до View для відображення.
- Контролер містить бізнес-логіку застосунку.
📌 Приклад Controller (Python/Flask):
from flask import Flask, render_template
from models import Product
app = Flask(__name__)
@app.route('/product/<int:product_id>')
def product_detail(product_id):
product = Product.query.get(product_id)
return render_template('product_detail.html', product=product)
Тут контролер отримує запит, завантажує дані з моделі та передає їх у представлення.
🔹 Як працює MVC у веб-застосунках?
1️⃣ Користувач відправляє запит (наприклад, натискає на посилання /product/1
).
2️⃣ Контролер приймає запит та звертається до моделі для отримання даних.
3️⃣ Модель отримує дані з бази даних та передає їх назад контролеру.
4️⃣ Контролер передає дані до представлення (шаблону).
5️⃣ View відображає кінцевий результат у вигляді HTML-сторінки.
🔄 Цикл повторюється для кожного нового запиту.
🔹 MVC vs MTV (Django)
Django використовує MTV (Model-Template-View), що є його адаптацією MVC:
MVC | MTV (Django) | Опис |
---|---|---|
Model | Model | Робота з базою даних. |
View | Template | Відображення даних у HTML. |
Controller | View | Логіка та маршрутизація. |
Фактично, у Django View виконує роль Controller, а Templates замінюють View.
🔹 Де використовується MVC?
✅ Django (як MTV)
✅ Flask
✅ ASP.NET MVC
✅ Ruby on Rails
✅ Spring MVC (Java)
✅ Angular, React, Vue.js (частково як MVVM)
🔹 Переваги MVC
✅ Розділення відповідальності – код розбито на логічні частини.
✅ Зручність у тестуванні – можна окремо тестувати моделі, представлення та контролери.
✅ Гнучкість – можна легко змінювати UI без зміни бізнес-логіки.
✅ Повторне використання коду – можна використовувати однакові моделі в різних представленнях.
🔹 Висновок
Архітектура MVC дозволяє ефективно організувати код у веб-застосунках, розділяючи його на дані (Model), логіку (Controller) та відображення (View). Це робить розробку зрозумілою, модульною та масштабованою. 🚀