0Pricing
Kotlin Academy · Урок

Совместное использование бизнес-логики

Повторно используйте код в iOS и Android

«Совместное использование бизнес-логики» — бесплатный урок Kotlin Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Kotlin Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Kotlin Academy содержит 4 уроков всего.

Зачем совместно использовать бизнес-логику

Пользовательский интерфейс отличается на разных платформах, но такие правила, как проверка данных, расчёт цены и поток данных, одинаковы. Совместное использование их в commonMain устраняет дублирование и ошибки.

Общие модели данных

Определяйте модели предметной области один раз в общем коде. С kotlinx.serialization они также одинаково сериализуются на обеих платформах.

import kotlinx.serialization.Serializable

@Serializable
data class Product(val id: Int, val name: String, val price: Double)

Общие варианты использования

Чистые бизнес-правила находятся в общем коде и не требуют программных интерфейсов платформы.

class CartTotal {
    fun total(items: List<Product>): Double =
        items.sumOf { it.price }
}

Общее сетевое взаимодействие с Ktor

Ktor — многоплатформенный клиент. Вы один раз пишете слой API, а каждая платформа предоставляет HTTP-механизм.

import io.ktor.client.HttpClient

class Api(private val client: HttpClient) {
    // suspend fun products(): List<Product> = client.get(...)
}

Общие корутины

Корутины работают в общем коде, поэтому асинхронные репозитории тоже можно использовать совместно. Приостанавливаемые функции доступны обеим платформам.

class Repository(private val api: Api) {
    suspend fun load(): List<Product> = api.products()
}

Шаблон репозитория

Распространённый шаблон: Repository координирует сеть и кэш, предоставляя понятные методы. Оба приложения вызывают один и тот же репозиторий.

Общие ViewModels

С такими библиотеками, как Decompose, или с общим ViewModel можно также совместно использовать логику представления и состояние, оставляя нативным только отображение.

Предоставление состояния как потока

Предоставляйте состояние с помощью StateFlow, чтобы Android напрямую собирал его, а iOS наблюдала за ним через оболочку.

import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow

class ProductState {
    private val _items = MutableStateFlow<List<Product>>(emptyList())
    val items: StateFlow<List<Product>> = _items
}

Приостанавливаемые функции и iOS

Приостанавливаемые функции Kotlin предоставляются Swift как методы с обработчиком завершения или асинхронные методы. iOS вызывает их с помощью async/await Swift.

// Swift
// let products = try await repository.load()

Не помещайте пользовательский интерфейс в общий код

Не стремитесь совместно использовать пользовательский интерфейс. Совместное использование логики при нативном отображении обеспечивает лучший пользовательский опыт и одновременно устраняет дублирование правил.

Рабочий пример логики

Общий вариант использования написан на обычном Kotlin. Здесь он запускается автономно и вычисляет общую стоимость корзины.

data class Product(val name: String, val price: Double)

fun total(items: List<Product>): Double = items.sumOf { it.price }

fun main() {
    val cart = listOf(Product("Pen", 2.5), Product("Book", 12.0))
    println("Total: " + total(cart))
}

Быстрая проверка

В хорошо структурированном приложении KMM что из перечисленного лучше всего подходит для совместного использования, а что должно остаться нативным?

Итоги

Вы можете совместно использовать слой логики:

  • Модели, варианты использования, репозитории, сетевое взаимодействие Ktor и корутины
  • Предоставляйте состояние через StateFlow; iOS использует async/await для приостанавливаемых функций
  • Пользовательский интерфейс и навигацию оставляйте нативными

Далее: доступ к программным интерфейсам платформы.

Часто задаваемые вопросы

Урок «Совместное использование бизнес-логики» бесплатный?

Да — полный текст урока «Совместное использование бизнес-логики» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Kotlin Academy, подпишись на CoddyKit PRO. Курс Kotlin Academy содержит 4 уроков всего.

Чему я научусь в уроке «Совместное использование бизнес-логики»?

Повторно используйте код в iOS и Android Ты практикуешь Kotlin Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Kotlin Academy?

Предыдущий опыт не требуется. Kotlin Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Совместное использование бизнес-логики»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Kotlin Academy?

Да. Каждый урок Kotlin Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Структура проекта KMM
  2. expect и actual
  3. Совместное использование бизнес-логики
  4. API платформ
← Назад к Kotlin Academy