Model View Controller (MVC)
Model-View-Controller (MVC) – это паттерн проектирования, который используется для организации кода и разделения ответственностей между различными компонентами в приложении. Он позволяет разделить данные (модель), пользовательский интерфейс (представление) и логику (контроллер) на отдельные компоненты, что упрощает поддержку и разработку приложения.
Модель (Model) представляет данные и бизнес-логику приложения. Она отвечает за получение, обработку и хранение данных. Модель ничего не знает о представлении или контроллере, она просто предоставляет интерфейс для работы с данными. Например, если у нас есть приложение для управления задачами, модель может представлять собой класс "Task" с методами для создания, удаления и изменения задач.
Представление (View) отображает данные из модели пользователю. Оно предоставляет пользовательский интерфейс для взаимодействия с приложением. Представление получает необходимые данные от модели и отображает их. Оно не содержит никакой бизнес-логики и не обрабатывает данные. Например, представление может быть HTML-шаблоном страницы, отображающей информацию о задаче.
Контроллер (Controller) реагирует на действия пользователя и обновляет модель и представление соответствующим образом. Он получает запросы от пользователя, взаимодействует с моделью для получения или обновления данных и обновляет представление в соответствии с этими изменениями. Например, если пользователь нажимает кнопку "Добавить задачу", контроллер обрабатывает это действие, создает новую задачу в модели и обновляет представление, чтобы отобразить новую задачу.
Вот пример простого кода на языке Python, который демонстрирует использование паттерна MVC:
class Task:
def __init__(self, name):
self.name = name
self.completed = False
class TaskView:
def display_task(self, task):
print(f'Task: {task.name}')
print(f'Completed: {task.completed}')
class TaskController:
def __init__(self, task, view):
self.task = task
self.view = view
def set_task_completed(self):
self.task.completed = True
self.view.display_task(self.task)
task = Task('Buy groceries')
view = TaskView()
controller = TaskController(task, view)
controller.set_task_completed()
В этом примере класс `Task` представляет модель, класс `TaskView` представляет представление, а класс `TaskController` представляет контроллер. При вызове метода `set_task_completed()` контроллер обновляет модель (устанавливает статус задачи "выполнена") и обновляет представление, чтобы отобразить изменения.
Таким образом, использование паттерна MVC позволяет разделить ответственности между различными компонентами приложения, что упрощает его разработку и поддержку.