17
Prof. Paulo Henrique Padrão MVC

Padrão MVC

Embed Size (px)

Citation preview

Page 1: Padrão MVC

Prof. Paulo Henrique

Padrão MVC

Page 2: Padrão MVC

MODEL-VIEW- CONTROLLER

Page 3: Padrão MVC

MVC – Model-View-Controller

• Padrão arquitetural• Proposto em 1979 por Trygve Reenskaug• Evolução da Arquitetura em Camadas

1- Tier =>Tudo Junto!2- Tier => Dados Separados3- Tier => Apresentação Separada

da Lógica de Negócio

Page 4: Padrão MVC

MVC- Contexto

Complicações do 3-Tier

• Uma mesma aplicação pode possuir diferentes visões dos seus dados e serviços

• Navegadores distintos, acesso móvel• Controle de Acesso, Personalização

• O modelo dos dados pode evoluir e não se deseja

afetar a suas diversas formas de visualização• Visões distintas querem possuir dados atualizados

Page 5: Padrão MVC

MVC – Model-View-ControlDivisão da aplicação em três grandes

“componentes”:• Model

• define e gerencia o domínio da informação • notifica observadores sobre mudanças nos dados.

• View • Representa a camada de apresentação dos dados e

pode possuir várias versões distintas• Controller

• Realiza a comunicação e encapsula a comunicação entre o modelo e a visão adequada

• Atualiza o modelo

Page 6: Padrão MVC

MVC – EstruturaMétodos

Eventos

Page 7: Padrão MVC

MVC – Model (Modelo)• Representa a camada de regra de negócios e

encapsula os dados• Representa as estruturas de dados e as

operações que atuam nestes dados• Contém o estado corrente da aplicação

• Em uma aplicação orientada a objetos, constitui as classes de objetos da aplicação que implementam as funcionalidades da aplicação

• Operação de saque• Saque e atualização do saldo da conta de um

usuário estariam “neste componente”

Page 8: Padrão MVC

MVC – Visão (View)

• Recebe a entrada de dados dos usuários e os eventos de interação

• Implementam exclusivamente a lógica de apresentação dos dados em um formato apropriado para os usuários.

• A mesma informação pode ser apresentada de maneiras diferentes

• Grupos de usuários com requisitos diferentes

Page 9: Padrão MVC

MVC – Controller (Controlador)

• É responsável pelo fluxo da aplicação• Interpreta os eventos vindos dos usuários

(repassados pelas View) e define como que métodos do modelo serão chamados

• Funciona como um mediador entre a camada View e o modelo

• é ele, portanto, que permite a adição de novas View distintas

Page 10: Padrão MVC

MVC – Estrutura

Page 11: Padrão MVC

MVC e a Web

Complicações do 3-Tier

• Uma mesma aplicação pode possuir diferentes visões dos seus dados e serviços

• Navegadores distintos, acesso móvel• Controle de Acesso, Personalização

• O modelo dos dados pode evoluir e não se deseja afetar a suas diversas formas de visualização

• Visões distintas querem possuir dados atualizados

Page 12: Padrão MVC

MVC e a Web

Page 13: Padrão MVC

MVC e a Web• O trio Servlet-JSP-Beans com MVC

• Possibilitou uma arquitetura extensível e com clara separação dos interesses

Page 14: Padrão MVC

MVC e Web - Frameworks existentes

Diversos frameworks nasceram para facilitar a configuração e a implementação do MVC para Web• ActionScript 3

• PureMVC• .NET

• ASP.NET MVC - oficial da Microsoft• Java

• Apache Struts• Spring MVC• JSF

• PHP• Zend Framework

• Ruby• Ruby on Rails

Page 15: Padrão MVC

Implementando MVC com JSP/Servlet• Cliente – Browser Web• JSP – Implementa a camada de Visão• Servlet – Recebe e processa a requisição. Instancia o

controlador correspondente à requisição• BD - Implementa o modelo. Fornece os métodos

responsáveis por acessar o banco de dados, inserir e recuperar valores

Page 16: Padrão MVC

Implementando MVC com JSP/Servlet

• Implementando o Modelo• Criar uma classe que encapsule o acesso a uma

tabela do banco de dados• Geralmente é feito utilizando-se o padrão DAO

(Data Access Object)• Esse padrão gerencia a conexão e manipula

registros no banco de dados

Page 17: Padrão MVC

Implementando MVC com JSP/Servlet

• Implementando o Controlador• Criar um servlet controlador para cada entidade

relevante no banco• Possui métodos de CRUD da entidade a que ele

corresponde

• Implementando a Visão• Criar JSPs que chame o servlet controlador

específico, passando como parâmetro a ação desejada