Как проектировать для сокращения избыточных классов в Котлине?

Я изучаю образец «Kotlin для разработчиков Android (книга)» на странице https://github.com/antoniolg/Kotlin-for-Android-Developers

Есть три класса в другом файле kt, я думаю, что три класса похожи, и эти mulit-классы делают программу сложной.

Как я могу перепроектировать структуру проекта и сделать проект более понятным?

DbClasses.kt

class DayForecast(var map: MutableMap<String, Any?>) { var _id: Long by map var date: Long by map var description: String by map var high: Int by map var low: Int by map var iconUrl: String by map var cityId: Long by map constructor(date: Long, description: String, high: Int, low: Int, iconUrl: String, cityId: Long) : this(HashMap()) { this.date = date this.description = description this.high = high this.low = low this.iconUrl = iconUrl this.cityId = cityId } } 

tables.kt

 object DayForecastTable { val NAME = "DayForecast" val ID = "_id" val DATE = "date" val DESCRIPTION = "description" val HIGH = "high" val LOW = "low" val ICON_URL = "iconUrl" val CITY_ID = "cityId" } 

DomainClasses.kt

 data class Forecast( val id: Long, val date: Long, val description: String, val high: Int, val low: Int, val iconUrl: String ) 

Что касается классов, связанных с базой данных, вы можете подумать об использовании библиотеки ORM, которая будет аннотировать поля и создавать схему таблицы базы данных (удалить необходимость для DayForecastTable), например Room ( https://developer.android.com/training/data-storage/room/ index.html )

Вы можете технически использовать эти классы во всем своем приложении, чтобы уменьшить необходимость в DomainClasses, хотя я бы предложил сохранить классы уровня домена, чтобы сделать модель домена независимой от базы данных.

Intereting Posts
как реализовать java-интерфейс SAM в Котлине? Как хранить временную переменную при инициализации объекта Kotlin? RxJava: onBackpressureBlock () странное поведение Kotlin – Продолжить Coroutine после исключения «Ни одна из следующих функций не может быть вызвана с аргументами, предоставленными« с топливным HTTP-протоколом » Не удается получить доступ к EditText или другим компонентам пользовательского интерфейса с помощью Kotlin Как запустить образец Kotlin / Native win32 Spring Boot @Autowired с Kotlin в @Service всегда имеет значение null Нет активного администратора … – блокировка экрана в Android Kotlin: получить ссылку на функцию экземпляра класса RxJava обрабатывает несколько обратных вызовов внутри наблюдаемого Как создавать функции с совместимыми параметрами / результатами в Котлине? Onclick не отвечает с помощью kotlin в андроид-студии Какие эквиваленты Java 8 Stream.collect доступны в стандартной библиотеке Kotlin? Элементы меню панели инструментов Android никогда не отображаются, но переходят в переполнение