Архітектура MVC (Model-View-Controller) що це таке?

Архітектура 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). Це робить розробку зрозумілою, модульною та масштабованою. 🚀

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *