Há um ano atrás, quando a maioria da equipa actual do Android começou a trabalhar em upday, a aplicação estava longe de ser a aplicação robusta e estável que nós queríamos que fosse. Tentamos entender porque nosso código estava em tão má forma e encontramos dois principais culpados: a mudança contínua da IU e a falta de uma arquitetura que suportasse a flexibilidade que precisávamos. O aplicativo já estava em seu quarto redesenho em seis meses. O padrão de design escolhido parecia ser Model-View-Controller mas já era então um “mutante”, longe de como deveria ser.
Vamos descobrir juntos o que é o padrão Model-View-Controller; como tem sido aplicado no Android ao longo dos anos; como deveria ser aplicado para que possa maximizar a testabilidade; e algumas de suas vantagens e desvantagens.
Num mundo onde a lógica da interface do utilizador tende a mudar mais frequentemente do que a lógica empresarial, os programadores de desktop e Web precisavam de uma forma de separar a funcionalidade da interface do utilizador. O padrão MVC foi sua solução.
Model – a camada de dados, responsável por gerenciar a lógica de negócios e lidar com a API da rede ou banco de dados.
View – a camada UI – uma visualização dos dados do Model.
Controller – a camada lógica, é notificada do comportamento do usuário e atualiza o Model conforme necessário.