2. Padrões de Projeto WEB e o MVC
Grupo de Desenvolvedores
PHP de Goiás
Lista de Discussão
Certificações
Troca de Conhecimentos
Grupos de Estudo
Encontros
Palestras
Eventos
Networking
2
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com
3. Padrões de Projeto WEB e o MVC
O que são padrões?
quot;Cada padrão descreve um problema que
ocorre freqüentemente em seu ambiente,
e então descreve o cerne da solução para
aquele problema, de um modo tal que
você pode usar esta solução milhões de
vezes, sem nunca fazer a mesma coisa
repetidaquot;
Christopher Alexander
(Arquiteto e Urbanista)
3
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com
4. Padrões de Projeto WEB e o MVC
Padrões de Projeto
São Conceitos (não tecnologias).
Resolvem problemas específicos.
Devem conter:
Nome,
Exemplo,
Contexto,
Problema e
Solução.
4
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com
5. Padrões de Projeto WEB e o MVC
Padrões GoF
Gang-of-Four (Gangue-dos-Quatro)
ErichGamma,
Richard Helm,
Ralph Johnson e
John Vlissides
Organização dos Padrões
Escopo
Propósito
Classes
Criação
Objetos
Estrutural
Comportamental
5
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com
6. Padrões de Projeto WEB e o MVC
Organização dos Padrões
GoF
6
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com
7. Padrões de Projeto WEB e o MVC
Interação entre Padrões
7
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com
8. Padrões de Projeto WEB e o MVC
Observer
Comportamental de Objetos
Objetivo
Definir
uma dependência um-para-muitos entre
objetos.
Uma mudança de estado em um objeto fará
com que todos seus dependentes sejam
notificados e atualizados automaticamente.
8
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com
9. Padrões de Projeto WEB e o MVC
Observer
Problema
Como garantir a atualização de objetos que
dependem de outro objeto sem que este saiba
quais objetos dependem dele?
Observando-o.
9
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com
10. Padrões de Projeto WEB e o MVC
Observer
Estrutura e Participantes
10
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com
11. Padrões de Projeto WEB e o MVC
Observer
Aplicabilidade
Quando desejamos fornecer várias visões
distintas de um mesmo objeto que funciona
como um repositório de dados.
Quando uma mudança em um objeto exige
mudanças em outros, e não são conhecidos
quantos devem ser mudados.
Quando um objeto deve ser capaz de notificar
outros objetos sem que estes sejam
fortemente acoplados.
11
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com
12. Padrões de Projeto WEB e o MVC
Singleton
Criação de Objeto
Objetivo
Garantirque uma classe tenha uma única
instância, e prover um ponto de acesso global
a esta instância.
12
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com
13. Padrões de Projeto WEB e o MVC
Singleton
Problema
Como garantir a existência de somente uma
instância de uma classe em um sistema que
necessite de tal controle?
13
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com
14. Padrões de Projeto WEB e o MVC
Singleton
Estrutura e Participantes
14
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com
15. Padrões de Projeto WEB e o MVC
Singleton
Aplicabilidade
Quando deve existir exatamente uma instância
de uma classe, e ela deve ser acessível a
partir de um ponto bem conhecido.
Quando deve haver somente um objeto que
gerencie conexões com o banco de dados ou
acesso a um arquivo de log.
15
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com
16. Padrões de Projeto WEB e o MVC
Factory Method
Criação de Classe
Objetivo
Definiruma interface para criar um objeto, mas
deixar que subclasses decidam que classe
instanciar
Permite que uma classe delegue a
responsabilidade de instanciação às
subclasses
16
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com
17. Padrões de Projeto WEB e o MVC
Factory Method
Problema
Como fazer quando há a necessidade de
criação de objetos do mesmo tipo porém com
particularidades diferentes, sem alteração dos
já existentes?
Adicionando Métodos de Fabricação.
17
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com
18. Padrões de Projeto WEB e o MVC
Factory Method
Estrutura e Participantes
18
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com
19. Padrões de Projeto WEB e o MVC
Factory Method
Aplicabilidade
Considere uma aplicação onde é possível criar
vários tipos de documentos diferentes
Cada documento exige uma criação particular
A classe Application é responsável por criar os
documentos
Porém, a classe Application não tem como saber
antecipadamente as particularidades dos tipos de
documentos a serem criados
19
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com
20. Padrões de Projeto WEB e o MVC
Composite
Estrutural de Objeto
Objetivo
Compor objetos em estruturas de árvore para
representarem hierarquias partes-todo.
Permitir que clientes tratem de modo uniforme
objetos individuais e suas composições.
20
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com
21. Padrões de Projeto WEB e o MVC
Composite
Problema
Como fazer quando se deseja trabalhar com
objetos primitivos e objetos recipientes da
mesma forma?
Criando uma classe abstrata que representa
tanto os componentes primitivos como os
agregados.
21
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com
22. Padrões de Projeto WEB e o MVC
Composite
Estrutura e Participantes
22
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com
23. Padrões de Projeto WEB e o MVC
Composite
Aplicabilidade
Aplicações gráficas como editores de
programação visual que devem permitir a
construção de diagramas complexos a partir
de componentes simples.
Diferenças entre objetos simples e objetos
compostos devam ser ignoradas. Ou seja, o
cliente deve tratar objetos simples e
compostos igualmente.
23
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com
24. Padrões de Projeto WEB e o MVC
Duvidas??
24
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com
25. Padrões de Projeto WEB e o MVC
O que é MVC?
Aplicações Monolíticas
Aplicações em duas camadas
MVC (Model-View-Controller)
Padrão de Arquitetura
É um conceito
Fácil manutenção
Objetivos
Frameworks
25
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com
26. Padrões de Projeto WEB e o MVC
Vantagens do MVC
Reaproveitamento de código
Facilidade de manutenção
Integração de equipes e/ou divisão de tarefas
Camada de Persistência independente
Implementação de segurança
Facilidade na alteração da interface da
aplicação
26
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com
27. Padrões de Projeto WEB e o MVC
Camadas
Model
Bean
DAO
Actions
View
Controller
27
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com
28. Padrões de Projeto WEB e o MVC
Model
Bean
Entidade
Segurança
Encapsulamento
Vantagens
28
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com
29. Padrões de Projeto WEB e o MVC
Model
DAO – Data Access Object
Persistência
Portabilidade
Independência
29
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com
30. Padrões de Projeto WEB e o MVC
Model
Action
Regras do Negócio
Integra Bean, DAO e Views
30
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com
31. Padrões de Projeto WEB e o MVC
View
Ajax
Templates
Web - Standards
31
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com
32. Padrões de Projeto WEB e o MVC
Controller
Segurança
Controlar fluxo da aplicação
Inicia e finaliza o fluxo
32
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com
33. Padrões de Projeto WEB e o MVC
Fluxo da aplicação MVC
33
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com
34. Padrões de Projeto WEB e o MVC
Referências
Padrões GoF, POSA e J2EE.
Jefferson Teixeira de Souza, Ph.D
Padrões de Design Orientados a Objetos.
Jorge H. C. Fernandes
Utilizando UML e Padrões
CRAIG LARMAN
Wikipédia - www.wikipedia.org
34
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com
35. Padrões de Projeto WEB e o MVC
FIM
Almir Neto – almirneto@gmail.com
Otávio Calaça Xavier – otaviocx@gmail.com
35
Almir Neto - almirneto@gmail.com e Otávio Calaça - otaviocx@gmail.com