Junior — Middle
Fale-nos sobre a sua experiência na implementação do padrão arquitetónico Model-View-Intent (MVI).
sobes.tech IA
Resposta da IA
Model-View-Intent (MVI) — é um padrão arquitetónico que ajuda a gerir o estado da interface de utilizador através do fluxo de intenções (intents) do utilizador.
Na minha experiência de implementação de MVI no Android:
- Intent — ações ou eventos do utilizador que são enviados para o sistema.
- Model — lógica de negócio e estado que processam os intents e formam um novo estado.
- View — exibe o estado e gera intents.
Por exemplo, ao pressionar um botão, a View envia um Intent, o Model processa-o e atualiza o Estado, que a View exibe.
Isto permite tornar a UI previsível e fácil de testar.
Exemplo de código simplificado:
sealed class Intent {
object LoadData : Intent()
data class Submit(val text: String) : Intent()
}
data class ViewState(val isLoading: Boolean, val data: String?)
class Model {
private val state = MutableStateFlow(ViewState(false, null))
fun process(intent: Intent) {
when (intent) {
is Intent.LoadData -> loadData()
is Intent.Submit -> submitData(intent.text)
}
}
private fun loadData() {
state.value = ViewState(true, null)
// carregamento de dados
state.value = ViewState(false, "Dados carregados")
}
private fun submitData(text: String) {
// processamento do envio
}
fun getState(): StateFlow<ViewState> = state
}