Início > Padrão de Projeto > Aplicando MVC/Camadas em um projeto Android – PARTE 1

Aplicando MVC/Camadas em um projeto Android – PARTE 1


Diariamente nas comunidades Android-DevABP surgem dúvidas sobre qual o melhor padrão de projeto a ser aplicado em um projeto Android. Bom, particularmente para projetos de pequeno a médio porte prefiro aplicar o modelo de Camadas e o modelo de interação entre componentes (o contexto de componente neste artigo aplica-se a tudo que for objeto, camada, classes e etc) que o MVC implica, pois consigo separar minhas responsabilidades entre camadas e interagir com elas utilizando o MVC. Neste primeiro tutorial darei uma breve explicação sobre MVC, divisão por Camadas e a integração entre os dois.

No próximo post o “Aplicando em um projeto Android MVC/Camada – parte 2”  mostrarei na prática o uso do MVC/Camada com um exemplo simples de um CRUD (Create, Read, Update, Delete) persistindo suas informações em um banco de dados Sqlite.

MVC ( Model, View e Controller)

O MVC é um padrão de projeto que foi criado na década de 70, originalmente em Smalltalk, para facilitar a manipulação das interfaces gráficas. Como o meu amigo Tiago Farias repetiu várias vezes no post que ele criou: “MVC não é sobre camadas! É sobre interações”. Isso significa que o modelo MVC é sobre interações sobre componentes. Basicamente, o modelo MVC é dividido em três partes:

Model – Representa o estado do sistema, são elas: classes básicas, services, classes utilitárias do domínio e etc. É no modelo que deve ficar toda regra de negocio do seu domínio.   

View – É tudo aquilo que é responsável por mostrar visual ao usuário. No Caso do Android são XML (criado para montar tela) e Activity. O objetivo da View é mostrar o estado atual do seu modelo e também é responsável por saber quando o seu modelo foi alterado.

Controller – É a parte mais inteligente. Ela faz a comunicação do que vem do usuário para o sistema. O Controller também é responsável por tomar a decisão de redirecionamento. Por exemplo, o Controller que decide qual View será mostrada para o usuário.

MVC Interagindo sobre os Componentes

O MVC é baseando em dois padrões de projetos: o Strategy Observer. O dois princípios fortes do MVC são:

1 – O Model muda de estado, a View é notificada. Isso diz que a View é um “Observer”.

2 – Quando a View propaga uma ação, o Controller daquela View é responsável por dizer a qual o Model notifique a mudança. O controller é um Strategy e pode mudar o seu estado em tempo de execução.

O modelo MVC não precisa ser utilizado apenas em interfaces gráficas. Qualquer tipo de comunicação entre componentes, visuais ou não, pode ser aplicado por ele.

Dividindo em Camadas

A divisão em Camadas é um modelo que vem sendo bastante utilizado desde os anos 90. Basicamente, esse modelo separa as responsabilidades em Camadas e possui um alto nível de encapsulamento e coesão entre elas. Existem dois tipos de comunicação entre camadas:

Transparente (ou aberta) – As camadas de nível superior enxergam as de menor nível.

Opacas (fechada) – As camadas de nível superior não enxergam as de menor nível.

Exemplo de uma divisão em Camadas.

Juntando as peças: MVC + Camadas + Android

Para se adequar ao ambiente Android, podemos dividir em três camadas: Apresentação, Negócio e Persistência. Assim, podemos encapsular os componentes que têm a mesma característica em sua Camada.

Apresentação (tela) – Na camada de Apresentação, podemos ter os XML escritos que representa View (tela) e sua Activity que é responsável por mudar o estado da sua View.

Negócio – Na camada de Negócio fica toda regra que se diz respeito a uma determinada View. Ou seja, para cada View podemos ter uma classe de Negócio. 

Persistência – Na camada de Persistência fica tudo que for responsável à persistência de dados, por exemplo, gravar um arquivo em um diretório, gravar informações em uma base de dados, gravar informações em um arquivo e etc.

O papel do MVC nessa estrutura citada acima é de executar a interação entre essas camadas. Podemos aplicar a Camada de negocio como a de Model, a de apresentação com a de View. O Controller fica na camada de Apresentação. Sendo assim, esta Camada fica responsável por mostrar o estado do Model ao usuário e receber as requisições deste. Por fim, a camada de Persistência interage com o Model.

Exemplo da estrutura MVC aplicada ao Android

No próximo post, vamos botar a mão na massa e deixar de teoria. Até a próxima.

Referências:

http://tiagodev.wordpress.com/2011/01/29/mvc-nao-e-sobre-camadas/

http://www.docstoc.com/docs/30323975/Padr%C3%A3o-MVC-com-Java-Swing

http://fragmental.com.br/wiki/index.php?title=MVC_e_Camadas

Anúncios
  1. julho 7, 2011 às 2:06 pm

    Muito interessante usar padrões nesta plataforma que se assemelham aos padrões web.
    Acredito que a plataforma móvel reúne o melhor dos padrões web e desktop.

    Acredito que o fator que faz toda a diferença e ajuda muito no entendimento é o conhecimento de XML.

    Vale a pena ler o artigo.

  2. setembro 1, 2011 às 1:39 pm

    Ótimo artigo. Estou aguardando a segunda parte. =D

    Comecei um projeto em Android e pretendo usar o padrão MVC para torná-lo mais reutilizável. Sou iniciante em Android, gostaria de ver também algum tutorial sobre a camada de persistência, mostrando a criação dos DAOS e persistindo os dados.

    []’s

    • setembro 1, 2011 às 2:37 pm

      Já comecei a fazer a segunda parte. Acredito que segunda – feira já esta no AR 😀

  3. Marcos Paulo
    outubro 2, 2011 às 2:27 pm

    Artigo muito bom.

    Estou ansioso para ver a II parte.

  1. No trackbacks yet.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: