🗒 Задача¶
Дизайнер предоставил макет Android-приложения:
Для представленных экранов спроектируй следующие сущности для хранения данных:
-
Категория рецепта
-
Рецепт
-
Ингредиент
❌ Ошибки¶
-
в свойствах описывают элементы интерфейса
-
в свойствах перечисляется список свойств какой-то сущности, которые можно вынести в отдельный класс
✏️ Комментарии¶
Наша задача как архитектора здесь – спроектировать классы для хранения данных. То есть создаем только модельки для хранения данных.
Кнопки давай вообще уберем, чтобы не отвлекали внимание. Это стандартные компоненты и отдельные кастомные классы делать для них не придется.
Наша задача как архитектора здесь – спроектировать классы для хранения данных, а не элементов UI.
Класс – это шаблон будущего конкретного объекта. Это не переменная со списком объектов. Название сущности должно быть в единственном числе.
Обычно для простых моделек мы используем списки, но все зависит от дополнительного контекста. Главное, что тут корректно отображен сет или лист из объектов.
В рецепте есть еще метод приготовления, который можно было бы представить в виде простого списка строк.
Предлагаю для объекта категории и рецепта еще добавить свойство imageUrl. Оно будет хранить название или ссылку на изображение.
🧾 Решение¶
// обычные классы тоже ок (data будут в курсе дальше)
// это реальные модели из https://stage.androidsprint.ru/
data class Category(
val id: Int,
val title: String,
val description: String,
val imageUrl: String,
val recipes: List<Recipe>,
)
data class Recipe(
val id: Int,
val title: String,
val ingredients: List<Ingredient>,
val method: List<String>,
val imageUrl: String,
)
data class Ingredient(
val quantity: String,
val unitOfMeasure: String,
val description: String,
)