Compartir la lógica de negocio
Reutilícela en iOS y Android
Compartir la lógica de negocio es una lección gratuita de Kotlin Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Kotlin Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Kotlin Academy incluye 4 lecciones en total.
¿Por qué compartir la lógica de negocio?
La interfaz de usuario varía según la plataforma, pero reglas como la validación, los precios y el flujo de datos son idénticas. Compartirlas en commonMain elimina duplicaciones y errores.
Modelos de datos compartidos
Defina los modelos de su dominio una sola vez en el código común. Con kotlinx.serialization también se serializan de forma idéntica en ambas plataformas.
import kotlinx.serialization.Serializable
@Serializable
data class Product(val id: Int, val name: String, val price: Double)Casos de uso compartidos
Las reglas de negocio puras residen en el código común y no necesitan API de ninguna plataforma.
class CartTotal {
fun total(items: List<Product>): Double =
items.sumOf { it.price }
}Redes compartidas con Ktor
El cliente Ktor es multiplataforma. Escriba la capa de API una sola vez; cada plataforma proporciona un motor HTTP.
import io.ktor.client.HttpClient
class Api(private val client: HttpClient) {
// suspend fun products(): List<Product> = client.get(...)
}Corrutinas compartidas
Las corrutinas funcionan en el código común, por lo que los repositorios asíncronos también se pueden compartir. Las funciones suspend se exponen a ambas plataformas.
class Repository(private val api: Api) {
suspend fun load(): List<Product> = api.products()
}El patrón Repository
Un patrón habitual: Repository coordina la red y la caché, y expone métodos claros. Ambas aplicaciones llaman al mismo repositorio.
ViewModels compartidos
Con bibliotecas como Decompose o un ViewModel compartido, también se pueden compartir la lógica de presentación y el estado, dejando únicamente la representación como código nativo.
Exponer el estado como Flow
Exponga el estado con StateFlow para que Android lo recopile directamente y iOS lo observe mediante 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
}Funciones suspend e iOS
Las funciones suspend de Kotlin se exponen a Swift como métodos con completion handler o async. iOS las invoca con el async/await de Swift.
// Swift
// let products = try await repository.load()Mantener la interfaz de usuario fuera del código compartido
Evite compartir la interfaz de usuario. Compartir la lógica y representar la interfaz de forma nativa ofrece la mejor experiencia de usuario, además de eliminar las reglas duplicadas.
Un ejemplo de lógica ejecutable
El caso de uso compartido es Kotlin puro. Aquí se ejecuta de forma independiente para calcular el total de un carrito.
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))
}Comprobación rápida
En una aplicación KMM bien estructurada, ¿cuál de estos elementos es el mejor candidato para compartir y cuál debería permanecer nativo?
Resumen
Puede compartir la capa de lógica:
- Modelos, casos de uso, repositorios, redes con Ktor y corrutinas
- Exponga el estado mediante
StateFlow; iOS usa async/await para las funciones suspend - Mantenga nativas la interfaz de usuario y la navegación
Siguiente: acceder a las API de la plataforma.
Preguntas frecuentes
¿La lección «Compartir la lógica de negocio» es gratis?
Sí — el texto completo de «Compartir la lógica de negocio» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Kotlin Academy, actualiza a CoddyKit PRO. El curso de Kotlin Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Compartir la lógica de negocio»?
Reutilícela en iOS y Android Practicas Kotlin Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Kotlin Academy?
No se requiere experiencia previa. Kotlin Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Compartir la lógica de negocio»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Kotlin Academy?
Sí. Cada lección de Kotlin Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Estructura de proyectos KMM
- expect y actual
- Compartir la lógica de negocio
- API de plataforma