Padrões de Arquitetura | Arquitetura
- Padrões de Arquitetura | Arquitetura
𝟭. MVC (Model-View-Controller)
É um dos padrões de design mais antigos e adotados. Seu objetivo principal é separar os dados da aplicação, a interface do usuário e a lógica de controle em três componentes interconectados.
- Model (Modelo): Gerencia os dados e a lógica.
- View (Visão): Exibe as informações.
- Controller (Controlador): Conecta o Modelo e a Visão, lidando com a entrada do usuário.
Uso: Aplicações web com uma separação clara entre manipulação de dados e interface do usuário.
𝟮. MVP (Model-View-Presenter)
Esse padrão evoluiu do MVC, buscando resolver suas limitações em ambientes orientados a eventos, desacoplando a Visão do Modelo.
- Model (Modelo): Gerencia os dados.
- View (Visão): Exibe os dados e envia comandos do usuário ao Presenter.
- Presenter (Apresentador): Recupera dados do Modelo e os apresenta à Visão.
Uso: Aplicações que priorizam testes e lógica da interface, como apps Android.
𝟯. MVI (Model-View-Intent)
MVI é uma arquitetura reativa que adota o fluxo de dados unidirecional, garantindo que, dado um estado, a interface do usuário permaneça consistente.
- Model (Modelo): Representa o estado.
- View (Visão): Reflete o estado.
- Intent (Intenção): Representa ações do usuário que alteram o estado.
Uso: Aplicações reativas ou frameworks como RxJava com foco em consistência de estado.
𝟰. MVVM (Model-View-ViewModel)
O MVVM surgiu para lidar com a complexidade no desenvolvimento de UIs, promovendo uma abordagem desacoplada onde o ViewModel gerencia a lógica da interface sem conhecer diretamente os componentes da UI.
- Model (Modelo): Gerencia e exibe os dados.
- ViewModel: Contém os dados relacionados à interface e a lógica.
Uso: Aplicações com interfaces ricas ou plataformas com data-binding, como WPF ou Android com LiveData.
𝟱. MVVM-C (MVVM com Coordinator)
MVVM-C é uma extensão do MVVM, introduzindo o Coordinator (Coordenador) para lidar com a navegação, desacoplando-a da View e do ViewModel.
Uso: Aplicações maiores, especialmente no iOS, onde a navegação complexa precisa estar separada da lógica da interface.
𝟲. VIPER (View-Interactor-Presenter-Entity-Router)
VIPER é uma arquitetura modular semelhante à Clean Architecture. Enfatiza a testabilidade e o Princípio da Responsabilidade Única, dividindo a lógica da aplicação em componentes distintos.
- View (Visão): Exibe o que o Presenter fornece.
- Interactor (Interator): Contém a lógica de negócio para cada caso de uso.
- Presenter (Apresentador): Contém a lógica de apresentação dos dados para a View.
- Entity (Entidade): Inclui os modelos de dados principais.
- Router (Roteador): Contém a lógica de navegação.
Uso: Aplicações complexas, especialmente no iOS, que necessitam de modularidade, testabilidade e clareza.
| Padrão | Componentes Principais | Características Principais | Casos de Uso Ideais |
|---|---|---|---|
| MVC | Model, View, Controller | Separação clara entre dados, interface e controle | Aplicações web tradicionais |
| MVP | Model, View, Presenter | Facilita testes; o Presenter faz a mediação | Aplicações Android; foco em testabilidade |
| MVI | Model, View, Intent | Fluxo de dados unidirecional; reativo | Apps reativos com RxJava/Redux-like |
| MVVM | Model, View, ViewModel | Data-binding; ViewModel desacoplado da View | Apps com UI rica; WPF, Android com LiveData |
| MVVM-C | MVVM + Coordinator | Navegação desacoplada da UI e lógica | Aplicações iOS grandes e complexas |
| VIPER | View, Interactor, Presenter, Entity, Router | Alta modularidade e testabilidade; inspirado em Clean Architecture | Aplicações iOS muito complexas |
