Arquitetura de software · Estrutura do código · 7 min de leitura
Arquitetura de apps mobile: camadas, MVVM e Kotlin Multiplatform
Como organizar um app Android ou iOS em camadas de interface, domínio e dados — e o que dá para compartilhar entre as duas plataformas.
Arraste para o lado para ver o diagrama inteiro.
As camadas
- Interface: telas declarativas (Jetpack Compose, SwiftUI) que só desenham o estado.
- ViewModel: guarda o estado da tela e recebe os eventos, sobrevivendo a rotações.
- Domínio: regras de negócio em casos de uso — opcional, para lógica reutilizada.
- Dados: repositórios que unem banco local e rede e são a fonte única da verdade.
Fluxo de dados unidirecional
Eventos sobem (clique → ViewModel), estado desce (ViewModel → tela). Com estado imutável e fluxos observáveis (Flow, StateFlow, Observation), a tela fica previsível e fácil de testar.
Kotlin Multiplatform
Compartilhe o que é igual nas duas plataformas — modelos, regras, repositórios, rede, banco — e mantenha nativos a interface, navegação, permissões e notificações. Assim se ganha consistência sem abrir mão da experiência de cada sistema.
Em resumo
- Interface só desenha o estado.
- ViewModel guarda estado e trata eventos.
- Repositório: fonte única, offline primeiro.
- KMP compartilha lógica; UI segue nativa.