0Pricing
Kotlin Academy · Lekcja

Współdzielenie logiki biznesowej

Wykorzystuj kod ponownie na iOS i Androidzie

Współdzielenie logiki biznesowej to bezpłatna lekcja Kotlin Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Kotlin Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Kotlin Academy zawiera 4 lekcji w sumie.

Dlaczego współdzielić logikę biznesową?

Interfejs użytkownika różni się w zależności od platformy, ale reguły takie jak walidacja, ustalanie cen i przepływ danych są identyczne. Umieszczenie ich w commonMain usuwa duplikację i ogranicza liczbę błędów.

Współdzielone modele danych

Zdefiniuj modele domenowe raz we wspólnym kodzie. Dzięki kotlinx.serialization są one również serializowane identycznie na obu platformach.

import kotlinx.serialization.Serializable

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

Współdzielone przypadki użycia

Czyste reguły biznesowe umieszcza się we wspólnym kodzie, ponieważ nie wymagają interfejsów API platformy.

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

Współdzielona komunikacja sieciowa z Ktor

Klient Ktor jest wieloplatformowy. Warstwę API pisze się raz, a każda platforma dostarcza silnik HTTP.

import io.ktor.client.HttpClient

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

Współdzielone korutyny

Korutyny działają we wspólnym kodzie, dlatego można współdzielić również asynchroniczne repozytoria. Funkcje zawieszane są udostępniane obu platformom.

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

Wzorzec repozytorium

Typowy wzorzec: Repository koordynuje komunikację sieciową i pamięć podręczną, udostępniając przejrzyste metody. Obie aplikacje wywołują to samo repozytorium.

Współdzielone modele widoku

Dzięki bibliotekom takim jak Decompose lub współdzielonemu elementowi ViewModel można współdzielić również logikę prezentacji i stan, pozostawiając natywne tylko renderowanie.

Udostępnianie stanu jako Flow

Udostępniaj stan za pomocą StateFlow, aby Android mógł go bezpośrednio obserwować, a iOS — za pomocą wrappera.

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
}

Funkcje zawieszane i iOS

Funkcje zawieszane Kotlina są udostępniane Swiftowi jako metody z completion handlerem lub metody asynchroniczne. iOS wywołuje je za pomocą async/await Swifta.

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

Nie umieszczaj interfejsu użytkownika we wspólnym kodzie

Należy unikać współdzielenia interfejsu użytkownika. Współdzielenie logiki przy natywnym renderowaniu zapewnia najlepsze doświadczenia użytkownika, a jednocześnie usuwa powielone reguły.

Działający przykład logiki

Współdzielony przypadek użycia jest napisany w zwykłym Kotlinie. Poniżej działa samodzielnie i oblicza łączną wartość koszyka.

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))
}

Szybki test

W dobrze zaprojektowanej aplikacji KMM co najlepiej współdzielić, a co powinno pozostać natywne?

Podsumowanie

Można współdzielić warstwę logiki:

  • Modele, przypadki użycia, repozytoria, komunikację sieciową Ktor i korutyny
  • Udostępniać stan przez StateFlow; iOS używa async/await dla funkcji zawieszanych
  • Interfejs użytkownika i nawigację pozostawić natywne

Następnie: dostęp do interfejsów API platformy.

Często zadawane pytania

Czy lekcja „Współdzielenie logiki biznesowej” jest bezpłatna?

Tak — pełny tekst „Współdzielenie logiki biznesowej” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Kotlin Academy, przejdź na CoddyKit PRO. Kurs Kotlin Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Współdzielenie logiki biznesowej”?

Wykorzystuj kod ponownie na iOS i Androidzie Ćwiczysz Kotlin Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Kotlin Academy?

Nie wymagamy żadnego doświadczenia. Kotlin Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Współdzielenie logiki biznesowej”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Kotlin Academy?

Tak. Każda lekcja Kotlin Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Struktura projektu KMM
  2. expect i actual
  3. Współdzielenie logiki biznesowej
  4. API platformy
← Powrót do Kotlin Academy