За что отвечает модель в архитектуре MVC?

«За что отвечает модель в архитектуре MVC?» — вопрос из категории Архитектура, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Модель (Model) в паттерне MVC отвечает за данные и бизнес-логику приложения. Её ключевые обязанности:

  • Инкапсуляция состояния приложения (данные).
  • Управление бизнес-правилами и валидацией.
  • Взаимодействие с источниками данных (базы данных, API, файлы).
  • Уведомление представления (View) об изменениях состояния (часто через механизм наблюдателя).

Модель не зависит от представления и контроллера, что обеспечивает разделение ответственности и упрощает тестирование.

Пример модели на Java:

public class User {
    private String name;
    private String email;

    // Геттеры и сеттеры для данных
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }

    // Бизнес-логика (валидация)
    public boolean isValidEmail() {
        return email != null && email.matches("^[^@]+@[^@]+\.[^@]+$");
    }

    // Метод для взаимодействия с данными (упрощённо)
    public void save() {
        // Логика сохранения в БД через DAO/Repository
    }
}

Модель часто сопровождается слоем доступа к данным (DAO, Repository), который также является частью её ответственности.