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
- Struktura projektu KMM
- expect i actual
- Współdzielenie logiki biznesowej
- API platformy