Compartilhamento da Lógica de Negócios
Reutilize em iOS e Android
Compartilhamento da Lógica de Negócios é uma aula grátis de Kotlin Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Kotlin Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Kotlin Academy inclui 4 aulas no total.
Por que Compartilhar a Lógica de Negócio?
A interface do usuário varia conforme a plataforma, mas regras como validação, definição de preços e fluxo de dados são idênticas. Compartilhá-las em commonMain elimina duplicações e erros.
Modelos de Dados Compartilhados
Defina seus modelos de domínio uma única vez no código comum. Com kotlinx.serialization, eles também são serializados de forma idêntica nas duas plataformas.
import kotlinx.serialization.Serializable
@Serializable
data class Product(val id: Int, val name: String, val price: Double)Casos de Uso Compartilhados
As regras de negócio puras ficam no código comum e não precisam de APIs da plataforma.
class CartTotal {
fun total(items: List<Product>): Double =
items.sumOf { it.price }
}Comunicação de Rede Compartilhada com Ktor
O cliente Ktor é multiplataforma. Você escreve a camada de API uma vez; cada plataforma fornece um mecanismo HTTP.
import io.ktor.client.HttpClient
class Api(private val client: HttpClient) {
// suspend fun products(): List<Product> = client.get(...)
}Corrotinas Compartilhadas
As corrotinas funcionam no código comum, portanto os repositórios assíncronos também podem ser compartilhados. As funções suspensas são expostas às duas plataformas.
class Repository(private val api: Api) {
suspend fun load(): List<Product> = api.products()
}O Padrão Repository
Um padrão comum: o Repository coordena a rede e o cache, expondo métodos simples. Os dois aplicativos chamam o mesmo repositório.
ViewModels Compartilhados
Com bibliotecas como Decompose ou um ViewModel compartilhado, a lógica de apresentação e o estado também podem ser compartilhados, deixando apenas a renderização nativa.
Expondo o Estado como Flow
Exponha o estado com StateFlow para que o Android o colete diretamente e o iOS o observe por meio de um encapsulador.
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
}Funções Suspensas e iOS
As funções suspensas do Kotlin são expostas ao Swift como métodos com manipulador de conclusão ou assíncronos. O iOS as chama com async/await do Swift.
// Swift
// let products = try await repository.load()Mantenha a Interface do Usuário Fora do Código Compartilhado
Evite compartilhar a interface do usuário. Compartilhar a lógica e renderizar de forma nativa proporciona a melhor experiência ao usuário, além de eliminar regras duplicadas.
Um Exemplo de Lógica Executável
O caso de uso compartilhado é Kotlin puro. Aqui ele é executado de forma independente para calcular o total do carrinho.
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ção Rápida
Em um aplicativo KMM bem estruturado, qual destas opções é a melhor candidata para ser compartilhada e qual deve permanecer nativa?
Recapitulação
Você pode compartilhar a camada de lógica:
- Modelos, casos de uso, repositórios, comunicação de rede com Ktor e corrotinas
- Exponha o estado por meio de
StateFlow; o iOS usa async/await para funções suspensas - Mantenha a interface do usuário e a navegação nativas
Próximo tópico: acesso às APIs da plataforma.
Perguntas Frequentes
A aula “Compartilhamento da Lógica de Negócios” é grátis?
Sim — o texto completo de “Compartilhamento da Lógica de Negócios” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Kotlin Academy, atualize para CoddyKit PRO. O curso de Kotlin Academy inclui 4 aulas no total.
O que vou aprender em “Compartilhamento da Lógica de Negócios”?
Reutilize em iOS e Android Você pratica Kotlin Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Kotlin Academy?
Nenhuma experiência prévia é necessária. Kotlin Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Compartilhamento da Lógica de Negócios”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Kotlin Academy?
Sim. Cada aula de Kotlin Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Estrutura de Projetos KMM
- expect e actual
- Compartilhamento da Lógica de Negócios
- APIs da Plataforma