0Pricing
Kotlin Academy · Lezione

Condivisione della logica di business

Riutilizzi il codice tra iOS e Android

Condivisione della logica di business è una lezione Kotlin Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Kotlin Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Kotlin Academy include 4 lezioni in totale.

Perché condividere la logica di business?

L'interfaccia utente varia in base alla piattaforma, ma regole come convalida, prezzi e flusso dei dati sono identiche. Condividerle in commonMain elimina duplicazioni ed errori.

Modelli di dati condivisi

Definisca i modelli del dominio una sola volta nel codice comune. Con kotlinx.serialization vengono inoltre serializzati nello stesso modo su entrambe le piattaforme.

import kotlinx.serialization.Serializable

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

Use case condivisi

Le regole di business pure risiedono nel codice comune e non richiedono API della piattaforma.

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

Networking condiviso con Ktor

Il client Ktor è multipiattaforma. Scriva il livello API una sola volta; ogni piattaforma fornisce un motore HTTP.

import io.ktor.client.HttpClient

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

Coroutines condivise

Le coroutines funzionano nel codice comune, quindi anche i repository asincroni possono essere condivisi. Le funzioni suspend sono esposte a entrambe le piattaforme.

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

Il pattern Repository

Un pattern comune: Repository coordina rete e cache, esponendo metodi chiari. Entrambe le app utilizzano lo stesso repository.

ViewModel condivisi

Con librerie come Decompose o con un ViewModel condiviso, è possibile condividere anche la logica di presentazione e lo stato, lasciando nativo solo il rendering.

Esposizione dello stato come Flow

Esponga lo stato con StateFlow, così Android può raccoglierlo direttamente e iOS può osservarlo tramite un wrapper.

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
}

Funzioni suspend e iOS

Le funzioni suspend di Kotlin vengono esposte a Swift come metodi con completion handler o async. iOS le richiama tramite async/await di Swift.

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

Mantenga l'interfaccia utente fuori dal codice condiviso

Eviti di condividere l'interfaccia utente. Condividere la logica mantenendo il rendering nativo offre la migliore esperienza utente e rimuove comunque la duplicazione delle regole.

Un esempio di logica eseguibile

Lo use case condiviso è costituito da normale Kotlin. Qui viene eseguito autonomamente per calcolare il totale di un carrello.

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

Verifica rapida

In un'app KMM ben strutturata, quale tra questi elementi è il candidato migliore per la condivisione e quale dovrebbe rimanere nativo?

Riepilogo

Può condividere il livello di logica:

  • Modelli, use case, repository, networking con Ktor e coroutines
  • Esponga lo stato tramite StateFlow; iOS utilizza async/await per le funzioni suspend
  • Mantenga native l'interfaccia utente e la navigazione

Successivamente: accedere alle API della piattaforma.

Domande Frequenti

La lezione «Condivisione della logica di business» è gratuita?

Sì — il testo completo di «Condivisione della logica di business» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Kotlin Academy, passa a CoddyKit PRO. Il corso Kotlin Academy include 4 lezioni in totale.

Cosa imparerò in «Condivisione della logica di business»?

Riutilizzi il codice tra iOS e Android Eserciti Kotlin Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Kotlin Academy?

Non è richiesta alcuna esperienza precedente. Kotlin Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Condivisione della logica di business»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Kotlin Academy?

Sì. Ogni lezione Kotlin Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Struttura di un progetto KMM
  2. expect e actual
  3. Condivisione della logica di business
  4. API della piattaforma
← Torna a Kotlin Academy