Sobes.tech
Junior — Middle

Pode explicar as diferenças entre os padrões arquiteturais MVVM, MVI e MVP?

sobes.tech IA

Resposta da IA

MVVM (Model-View-ViewModel), MVI (Model-View-Intent) e MVP (Model-View-Presenter) são padrões arquiteturais que ajudam a organizar o código nas aplicações, dividindo a responsabilidade entre os componentes.

  • MVP: A View é responsável por exibir e transmitir as ações do utilizador ao Presenter. O Presenter contém a lógica e atualiza a View. O Modelo representa os dados e a lógica de negócio. A View e o Presenter estão ligados diretamente.

  • MVVM: A View conecta-se ao ViewModel através de ligação de dados bidirecional (data binding). O ViewModel contém a lógica e o estado, e o Modelo os dados. O ViewModel não conhece diretamente a View, o que facilita os testes.

  • MVI: baseia-se num fluxo de dados unidirecional. A View gera Intents (intenções do utilizador), que são processadas no Modelo, atualizando o estado que depois é exibido na View. Isto simplifica a gestão do estado e torna o fluxo de dados previsível.

Exemplo em Android MVVM com LiveData:

class MyViewModel : ViewModel() {
    val data = MutableLiveData<String>()

    fun loadData() {
        // carregamento de dados
        data.value = "Hello MVVM"
    }
}

// Na Activity ou Fragment
viewModel.data.observe(this) { value ->
    textView.text = value
}