Вопрос проверяет понимание роли моделей данных и их места в архитектуре VIPER.
Entity в VIPER — это модели данных, которые описывают предметную область. Они не содержат UI-логики и не знают о других слоях архитектуры. Entity используются Interactor’ом для выполнения бизнес-операций. Чаще всего это структуры или классы с данными. Они максимально простые и переиспользуемые.
Entity — самый простой, но важный элемент VIPER.
Entity — объект, описывающий данные предметной области и правила, связанные с этими данными.
Обычно Entity:
содержит свойства данных
может включать простые методы валидации
не зависит от UIKit и инфраструктуры
struct User {
let id: String
let name: String
}
Entity не должна:
знать о сети или базе данных
содержать форматирование для UI
управлять навигацией
Если в Entity появляется логика отображения, это признак архитектурной ошибки.
Entity применяются:
в Interactor для бизнес-операций
при передаче данных между слоями
как входные и выходные модели
Важно не путать Entity и DTO:
Entity — модель предметной области
DTO — модель передачи данных (например, из сети)
Часто DTO преобразуются в Entity внутри Interactor.
Entity — это чистые модели данных. Чем проще и независимее они сделаны, тем устойчивее и переиспользуемее становится архитектура.