Pular para o conteúdo

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.

Compartilhável (KMP)Tela → ViewModel: eventosViewModel → Casos de usoCasos de uso → RepositórioRepositório → Banco localRepositório → RedeTela — Compose / SwiftUITelaCompose / SwiftUIViewModel — estado da telaViewModelestado da telaCasos de uso — domínio (opcional)Casos de usodomínio (opcional)Repositório — fonte da verdadeRepositóriofonte da verdadeBanco local — Room / SQLDelightBanco localRoom / SQLDelightRede — APIRedeAPI

Arraste para o lado para ver o diagrama inteiro.

A interface observa o estado exposto pelo ViewModel; o repositório decide entre cache local e rede (offline primeiro).

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

Referências

Continue aprendendo

Todos os temas de arquitetura de software →