O MVVMcross facilita a separação de preocupações em aplicativos de plataforma cruzada implementando o padrão Model-View-ViewModel (MVVM), que promove inerentemente uma clara divisão de responsabilidades entre diferentes componentes de uma aplicação. Veja como o MVVMcross consegue isso:
MVVM Implementação do padrão
O MVVMcross é construído em torno da arquitetura MVVM, que consiste em três componentes principais:
- Modelo: representa a lógica de dados e negócios do aplicativo. Ele encapsula as estruturas e operações de dados independentes da interface do usuário.
- View: lida com a interface do usuário e as interações do usuário. É responsável por exibir dados e receber a entrada do usuário.
- ViewModel: atua como um intermediário entre o modelo e a visualização. Ele expõe dados e comandos aos quais a visualização pode se ligar, decompondo efetivamente a visualização do modelo.
Ao manter essa separação, o MVVMCROSS garante que cada componente se concentre em sua função específica sem responsabilidades sobrepostas. Por exemplo, a visualização não deve conter a lógica de negócios e o ViewModel não deve manipular diretamente os elementos da interface do usuário.
Biblioteca de classe portátil (PCL) para lógica compartilhada
O MVVMCROSS usa uma biblioteca de classes portáteis (PCL) para abrigar os modelos, modelos e interfaces para serviços específicos da plataforma. Este PCL serve como o projeto principal, contendo a lógica de negócios compartilhada e o manuseio do banco de dados. Ao separar a lógica de negócios em um PCL, o MVVMCROSS permite que os desenvolvedores compartilhem uma parte significativa do código em diferentes plataformas, como iOS, Android e Windows. Essa abordagem não apenas facilita a reutilização do código, mas também garante que a lógica de negócios permaneça consistente entre as plataformas.
Ligação e comunicação de dados
O MVVMCROSS emprega a ligação de dados para o link visualizações com seus modelos de exibição correspondentes. Esse mecanismo permite que a visualização seja atualizada automaticamente quando o ViewModel mudar e vice -versa. A ligação dos dados é crucial para manter a separação de preocupações, pois permite que a visão reaja a alterações no ViewModel sem precisar conhecer os detalhes da implementação da lógica de negócios.
Além disso, o MVVMCROSS suporta várias técnicas de comunicação, como comandos e eventos, que aprimoram ainda mais a separação de preocupações, permitindo que a visão invocasse ações no ViewModel sem acessar diretamente seu estado interno.
Injeção de dependência e arquitetura de plug -in
O MVVMCROSS incorpora a injeção de dependência (DI) e uma arquitetura de plug -in para gerenciar dependências e estender os recursos da estrutura. A injeção de dependência ajuda a garantir que os componentes estejam vagamente acoplados, facilitando o teste e a manutenção do aplicativo. A arquitetura do plug -in permite que os desenvolvedores adicionem novas funcionalidades sem alterar a estrutura do núcleo, mantendo assim uma separação limpa de preocupações.
Gerenciamento do ciclo de vida
O MVVMcross fornece recursos de gerenciamento do ciclo de vida para o ViewModels, que estão ligados ao ciclo de vida das visualizações. Isso significa que o ViewModels pode ser notificado quando a visualização é criada, aparece, desaparece ou é destruída. Esse gerenciamento do ciclo de vida ajuda a manter uma separação limpa de preocupações, garantindo que os recursos sejam limpos adequadamente e que o estado do ViewModel seja gerenciado corretamente.
Em resumo, o MVVMcross facilita a separação de preocupações nos aplicativos de plataforma cruzada, aplicando o padrão MVVM, usando um PCL para lógica compartilhada, implementando a ligação de dados e incorporando injeção de dependência e gerenciamento do ciclo de vida. Esses recursos contribuem coletivamente para uma arquitetura de aplicativos robusta, sustentável e escalável.
Citações:[1] https://www.linkedin.com/advice/0/what-best-way-ensure-separation-concerns-mvvm-deign-csadc
[2] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[3] https://visualstudiomagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx
[4] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvmcross
[5] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[6] https://www.mvvmcross.com/documentation/getting-started/getting-started
[7] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[8] https://stackoverflow.com/questions/32220007/what-does-mvvmcross-do-that-xamarin-does-already
[9] https://github.com/mvvmcross/mvvmcross