Clean Architecture e MVVM no desenvolvimento Android

Guilherme Cardoso
4 min readJul 11, 2023

O desenvolvimento do Android evoluiu significativamente ao longo dos anos e os desenvolvedores agora têm acesso a padrões de arquitetura poderosos que podem aprimorar a capacidade de manutenção, testabilidade e escalabilidade geral do projeto. Dois padrões populares no ecossistema Android são Clean Architecture e Model-View-ViewModel (MVVM). Neste artigo, apresentarei esses conceitos, seus benefícios e como eles podem ser implementados em seus projetos Android.

O que é Clean Architecture?

Clean Architecture é um padrão de arquitetura com o objetivo de criar uma base de código modular e testável, reforçando a separação de responsabilidades. O princípio central do Clean Architecture é a regra de dependência, que afirma que as camadas internas de um aplicativo não devem depender das camadas externas. Aqui está um detalhamento das camadas em Clean Architecture:

The Clean Architecture by Robert C. Martin
  • Enterprise Business Rules (Entities): Representam a lógica de negócios e os modelos de domínio do aplicativo.
  • Application Business Rules (UseCases): Contêm as regras de negócios específicas do aplicativo e intermediam o fluxo de dados entre as camadas.
  • Interface Adapters: Consiste na camada que recebe os dados dos UseCases e é responsável por ser uma ponte entre o UseCases e o Framework, fazendo uso dos Presenters, Controllers e Gateways.
  • Frameworks: Consistem em bancos de dados e outras ferramentas externas, como um API Client e também é onde a UI é exibida ao usuário.

Os benefícios do Clean Architecture incluem capacidade de teste, flexibilidade e capacidade de manutenção aprimoradas. Ao desacoplar as camadas, fica mais fácil modificar ou substituir um componente específico sem afetar toda a aplicação.

O que é Model-View-ViewModel (MVVM)?

MVVM é um padrão de arquitetura de interface do usuário que separa a interface do usuário (View) da lógica de negócios (ViewModel) usando um mecanismo de vinculação de dados. O MVVM é amplamente adotado no desenvolvimento do Android porque promove uma clara separação de responsabilidades e simplifica o gerenciamento do código relacionado à interface do usuário. Veja como os componentes no MVVM funcionam juntos:

  • Model: Representa os dados e a lógica de negócios do aplicativo.
  • View: Exibe a interface do usuário e reage às interações do usuário.
  • ViewModel: Media a comunicação entre a View e o Model, expondo dados e comportamentos aos quais a View pode se vincular. Ele também lida com as interações do usuário e atualiza o Model conforme houver necessidade.

O MVVM promove a criação de interfaces orientadas a dados, fazendo uso de recursos de associação e observação de dados fornecidos por estruturas do Android, como LiveData ou o Kotlin’s Flow. Esses recursos dispensam a necessidade de atualizações manuais da interface do usuário e asseguram que a visualização reflita o estado atual dos dados do ViewModel.

Combinando Clean Architecture com MVVM

Clean Architecture e MVVM podem ser combinados para criar uma arquitetura robusta e escalável para aplicativos Android. A ideia principal é usar o padrão MVVM dentro de cada camada do Clean Architecture. Por exemplo, a camada View no MVVM corresponde à camada de Framework no Clean Architecture, enquanto o ViewModel se alinha com a camada de Interface Adapter. A seguir temos um exemplo de como seria o MVVM junto com as camadas do Clean Architecture.

Vale ressaltar que as camadas possuem dependência apenas das camadas mais internas, por exemplo: A View depende do ViewModel porém o ViewModel não depende da View.

Ao integrar esses padrões, podemos obter uma base de código altamente modular e testável. A separação oferecida pela Clean Architecture ajuda a isolar o código, o tornando mais fácil de prestar manutenção ou testar diferentes cenários sem afetar a lógica de negócios. Além disso, o MVVM simplifica o gerenciamento dos componentes da interface do usuário, reduzindo código normalmente associado às atualizações da interface do usuário. Para ajudar na assimilação desse conteúdo logo abaixo há a estrutura de um projeto onde foi aplicado os conceitos de MVVM com Clean Architecture dividido em:

  • Data: Responsável por fornecer e armazena dados, como em bancos de dados, serviços web ou outros.
  • Domain: Contém a lógica de negócios do aplicativo. É independente do aplicativo e não possui conhecimento da interface do usuário.
  • Presentation: Responsável pela exibição dos dados e interação com o usuário, incluindo a interface do usuário do aplicativo. Recebe os dados da camada de Domain e lida com a interação do usuário.
Repositório: https://github.com/CardosofGui/pokedex-clean-arch-mvvm

Conclusão

Clean Architecture e MVVM são padrões de arquitetura poderosos que podem beneficiar muito os desenvolvedores Android. A Clean Architecture fornece uma base de código estruturada e modular, enquanto o MVVM simplifica o gerenciamento da lógica relacionada à interface do usuário. Ao combinar esses padrões, os desenvolvedores podem criar aplicativos Android com fácil manutenção, testáveis e escaláveis. Entender esses conceitos e aplicá-los em seus projetos o colocará no caminho para se tornar um desenvolvedor Android cada vez mais melhor!

Referências

--

--