A programação reativa e o MVVM são duas abordagens que podem solucionar o problema de separar a camada de domínio da interface do usuário.
- O MVVM faz isso definindo um viewmodel, que é uma estrutura de dados mapeada para os componentes da interface do usuário. A interface do usuário exibe os dados e talvez atualize-os quando o usuário ocorrer.
- uma estrutura reativa define um gráfico de observáveis que notificam a interface do usuário que alguns dados foram alterados
Estruturas reativas estão ganhando participação, tanto em plataformas convencionais (com Rx em .net e java, react.js) quanto em locais mais experimentais (FRP em haskell).
Eu usei principalmente o MVVM com angular e considero a taxa de simplicidade para expressividade bastante satisfatória, embora eu tenha trabalhado apenas em projetos pequenos / médios com ele.
O que uma estrutura reativa compra para o desenvolvedor que o mvvm não?
Existe realmente alguma diferença? Por exemplo, knockout.js é anunciado como uma estrutura mvvm, mas tem uma sensação reativa em sua interface:
this.firstName = ko.observable("John");
this.lastName = ko.observable("Smith");
this.fullName = ko.computed(function() {
return this.firstName() + " " + this.lastName();
}, this);
Respostas:
Esses são conceitos não concorrentes diferentes e podem facilmente trabalhar juntos para produzir um ótimo resultado.
Em termos leigos:
O MVVM é útil para evitar a desordem do código por trás (GUI / acoplamento de modelo). A abordagem reativa é útil para reduzir a confusão de eventos / retornos de chamada.
Eu recomendaria aprender um pouco sobre XAML / WPF, pois a Microsoft é o inventor original do MVVM. A Microsoft também produziu uma implementação muito boa da abordagem Reativa: Extensões Reativas.
Aqui está uma tentativa decente de combiná-los:
http://www.reactiveui.net https://github.com/reactiveui/ReactiveUI
Pergunta SO relacionada:
/programming/1763411/reactive-extensions-rx-mvvm
fonte