Beruflich Dokumente
Kultur Dokumente
Contexto
GUI / Comunicao
TelaLogi TelaPagamentoQualitiCar
Arquitetura do Sistema n d
NEGCIO
Fachada
ControladorLogi ControladorPagamentoQualitiC
n ard
...
CadastroCont CadastroPagamentosCart
asInternet ao
ContaInternet PagamentoCart
ao
Interfaces
negcio-dados
IRepositorioContasInternet IRepositorioPagamentosCartao
DADOS
Algumas aes:
Analisar impactos
Modelar, antes de codificar
Utilizar solues e tcnicas
validadas
No reinventar a roda!
Sobre o livro
Seus quatro autores so conhecidos
como "The Gang of Four (GoF)
O livro tornou-se um clssico na
literatura orientada a objetos e
continua atual
Inteno Padres
1. Interfaces Adapter, Facade, Composite, Bridge
3. Construo Factory Method, Abstract Factory,
Builder, Prototype, Memento
2. Responsabilidade Singleton, Observer, Chain of
Responsibility,
Mediator, Proxy, Flyweight
4. Operaes Template Method, State, Command,
Strategy,
Interpreter
5. Extenses Iterator,Decorator, Visitor
Vistos em Sala Vistos Anteriormente Praticados nos prximos exerccios
** Classificao segundo Steven Metsker, Design Patterns Java Workbook, 2002.
Anlise e Projeto OO com UML e Padres | 15
PADRES RELACIONADOS
A
INTERFACES
Anlise e Projeto OO com UML e Padres | 16
Interface
Interface:
coleo de mtodos e constantes que uma classe
permite que objetos de outras classes acessem
Exigem que a classe que implementa a interface
oferea implementao para seus mtodos
No garante que mtodos tero implementao que
efetue alguma computao: stubs
slide com
Anlise e Projeto OO com UML e Padres | 20
animao
Discusso
1. Leia sobre o padro Bridge e destaque em que
contexto usamos uma variao deste padro na
arquitetura do QIB. Analise tambm a diferena
entre o Bridge e o uso feito no QIB. Por que o
Bridge mais geral?
implementa
ClasseExistente ce; Adaptador
...
ce.metodoUtil(); operacao()
Componen
te
Individu
Grupo
o
operacao() operacao()
for (int i=0; i<filhos.length;
add(Componente) i++) {
remove(Componen filho = filhos[i];
te) filho.operacao();
}
Criador Produto
cliente
criarProduto
()
CriadorConcre ProdutoConcr
to eto
criarProduto()
FabricaConcre ProdutoUm
taA A
criarProdutoUm( ProdutoDoi
) sA
criarProdutoDois
() FabricaConcre ProdutoUm
taB B
criarProdutoUm( ProdutoDoi
) sB
criarProdutoDois
() Anlise e Projeto OO com UML e Padres | 39
Discusso
1. Qual a diferena entre Factory Method e
Abstract Factory?
2. possvel o cliente solicitar a criao de um
objeto sem ter conhecimento algum de sua
classe concreta?
Que possveis formas voc enxerga para
implementar isto?
Lazy inicializatiom
idiom
Anlise e Projeto OO com UML e Padres | 46
Observer
Objetivo segundo o GoF:
Definir uma dependncia um-para-
muitos entre objetos de forma que,
quando um objeto mudar de estado,
todos os seus dependentes sejam
notificados e atualizados
automaticamente.
registra-se notifica
altera
tempo
dadosObservados =
conc.getDados();
Anlise e Projeto OO com UML e Padres | 49
Chain of Responsibility
Objetivo segundo o GoF:
"Evita acoplar o remetente de uma requisio ao seu
destinatrio ao dar a mais de um objeto a chance de
servir a requisio.
Compe os objetos em cascata e passa a requisio
pela corrente at que um objeto a sirva.
ProcessadorConcr
eto1
- sucessor:
Processador
processarRequisicao(
) ProcessadorConcr
eto2
- sucessor:
Processador
processarRequisicao(
) ...
ProcessadorConcr
sucessor.processarRequisi
etoN
cao()
processarRequisicao(
)
Anlise e Projeto OO com UML e Padres | 52
Discusso
1. Qual a diferena entre:
Singleton e Faade?
Chain of Responsibility e Adapter?
2. Na sua opnio:
Todos os objetos deveriam ser Singleton?
Singleton estaria indiretamente introduzindo variveis
globais? Isto bom ou ruim?
estado.processar();
EstadoConcreto EstadoConcreto
Um Dois
processar() processar()
TCPEstablish
TCPListen TCPClosed
ed
open() open() open()
close() close() close()
acknowledge() acknowledge() acknowledge()
cmd.executar
()
ComandoConcre ComandoConcre
toA toB
executar() executar()
receptor.acao(
)
Receptor Receptor
A B
aoA() aoB()
ComponenteConc
Decorador
reto component.operacao
operacao() operacao() ();
DecoradorConcre
DecoradorConcretoB
toA
estadoAdicional comportamentoAdicional
operacao() ()
operacao()
super.operacao();
comportamentoAdicional
Anlise
(); e Projeto OO com UML e Padres | 76
Exemplo
Toolkit de interface grfica
Texto - componente concreto
Texto com bordas - decorator
Texto com bordas e barra de rolagem -
decorator
http://www.vincehuston.org/dp/patterns_quiz.html