Skip to main content

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ãoComponentes PrincipaisCaracterísticas PrincipaisCasos de Uso Ideais
MVCModel, View, ControllerSeparação clara entre dados, interface e controleAplicações web tradicionais
MVPModel, View, PresenterFacilita testes; o Presenter faz a mediaçãoAplicações Android; foco em testabilidade
MVIModel, View, IntentFluxo de dados unidirecional; reativoApps reativos com RxJava/Redux-like
MVVMModel, View, ViewModelData-binding; ViewModel desacoplado da ViewApps com UI rica; WPF, Android com LiveData
MVVM-CMVVM + CoordinatorNavegação desacoplada da UI e lógicaAplicações iOS grandes e complexas
VIPERView, Interactor, Presenter, Entity, RouterAlta modularidade e testabilidade; inspirado em Clean ArchitectureAplicações iOS muito complexas

alt text