Você está na página 1de 146

Padres Gang of Four

Fernando Pedrosa fpedrosa@gmail.com

Fernando Pedrosa Lopes 1


Erich Gamma,
Richard Helm, Ralph
Johnson, John
Vlissides - Padres
de Projeto. Editora:
Bookman Companhia

Fernando Pedrosa Lopes 2


A orientao a objetos, por si s, no
garante sistemas reusveis e extensveis
Profissionais experientes conseguem
projetar bons sistemas, novatos no
Primeiro aprende-se as regras
Algoritmos, estruturas, linguagens
Depois os princpios
Projeto estruturado, Projeto OO

Fernando Pedrosa Lopes 3


Mas, sistemas complexos necessitam
de projetos robustos, que foram
postos prova
Estes Padres de Projeto tm que ser
compreendidos, lembrados e usados
Padres de Projeto representam
solues comprovadas para problemas
recorrentes em desenvolvimento de
software

Fernando Pedrosa Lopes 4


A ideia original surgiu em 1979, na
Arquitetura e Engenharia Civil
Christopher Alexander, arquiteto,
queria melhorar o processo de projeto
de edifcios e reas urbanas
Hoje, projetos de engenharia civil
seguem padres estabelecidos
Arcos, colunas, portas, janelas, etc. a
soluo para tudo isso j bem conhecida

Fernando Pedrosa Lopes 5


"Cada padro descreve um problema
que ocorre repetidas vezes em nosso
ambiente, e ento descreve o ncleo
da soluo para aquele problema, de
tal maneira que pode-se usar essa
soluo milhes de vezes sem nunca
faz-la da mesma forma duas vezes
Christopher Alexander, sobre
padres na arquitetura e engenharia
civil

Fernando Pedrosa Lopes 6


Na Engenharia de Software, quatro
autores (Gang of Four) se basearam
em Christopher Alexander para criar
Padres de Projeto de software
Em 1994 descreveram 23 padres em
seu livro
Hoje ele j est na sua trigsima sexta
edio
Mais de 500 mil cpias vendidas,
traduzido para 13 lnguas

Fernando Pedrosa Lopes 7


Descrio de uma soluo para
resolver um problema genrico de
projeto em um contexto especfico.
[...] Um padro de projeto d nome,
abstrai e identifica os aspectos-chave
de uma estrutura de projeto comum
para torn-la reutilizvel
Erich Gamma, et. al, sobre padres
de projeto de software

Fernando Pedrosa Lopes 8


Padres capturam a estrutura esttica
e a colaborao dinmica entre objetos
parcitipantes no projeto de sistemas
So especialmente bons para
descrever como e por que resolver
problemas no funcionais
Facilitam o reuso de solues
arquiteturais que deram certo antes
Aumentam a coeso, diminuem o
acoplamento

Fernando Pedrosa Lopes 9


Padres de projeto so compostos por
quatro elementos essenciais
Nome do padro
Problema a ser resolvido
Soluo dada pelo padro
Consequncias

Fernando Pedrosa Lopes 10


Um identificador utilizado para
resumir
O problema em questo
Suas solues
Suas consequncias
Aumenta o vocabulrio e melhora a
comunicao
A parte mais difcil de programao
dar bons nomes s variveis

Fernando Pedrosa Lopes 11


Descreve quando aplicar o padro
Explica o problema e seu contexto
Pode conter uma lista de pr
condies que precisam estar
presentes antes de levar em
considerao a aplicao do padro

Fernando Pedrosa Lopes 12


Descrio abstrata de como o padro
resolve o problema em questo
Descreve os elementos que compem
Relacionamentos
Responsabilidades
Colaboraes
Inclui algum exemplo concreto de
implementao
Porm o padro deve ser adaptado ao seu
contexto especfico

Fernando Pedrosa Lopes 13


Vantagens e desvantagens de aplicar o
padro
Esta seo serve para
Avaliar vrias alternativas de padres
Entender os custos e desafios
Entender os benficios de aplicar o padro
Inclui anlise de impacto envolvendo
Flexibilidade
Extensibilidade
Portabilidade

Fernando Pedrosa Lopes 14


Solues prontas, que podem ser
codificadas diretamente nas classes e
reutilizadas sem adaptao (como
APIs, colees de cdigo, etc.)
Projetos para contextos abrangentes e
complexos (uma aplicao ou
subsistema inteiro)
So aplicveis em situaes especficas

Fernando Pedrosa Lopes 15


Podem ser classificados por propsito
Padres de Criao
Abstraem o processo de criao de objetos
a partir da instanciao de classes
Padres Estruturais
Tratam da forma como classes e objetos
esto organizados para formar estruturas
maiores
Padres Comportamentais
Preocupam-se com algoritmos e
responsabilidades dos objetos
Fernando Pedrosa Lopes 16
Podem ser subclassificados por escopo
Padres de Classes
Tratam de relaes entre classes e
subclasses (herana)
So estticos, definidos em tempo de
compilao
Padres de Objetos
Tratam das relaes entre objetos, que
podem mudar em tempo de execuo

Fernando Pedrosa Lopes 17


Fernando Pedrosa Lopes 18
(INFRAERO - FCC 2009)
[52] Os padres de projeto (design patterns)
I. foram testados: refletem a experincia e conhecimento dos
desenvolvedores que utilizaram estes padres com sucesso em seu
trabalho;
II. so reutilizveis: fornecem uma soluo pronta que s no pode ser
adaptada para diferentes problemas;
III. so expressivos: formam um vocabulrio comum para expressar
grandes solues sucintamente;
IV. facilitam o aprendizado: reduzem o tempo de aprendizado de uma
determinada biblioteca de classes;
V. diminuem retrabalho: quanto mais cedo so usados, menor ser o
retrabalho em etapas mais avanadas do projeto.
Est INCORRETO o que consta APENAS em
(A) I. (B) II. (C) III. (D) IV. (E) V

Fernando Pedrosa Lopes 19


(DECEA - CESGRANRIO 2009)
[33] A equipe de desenvolvimento de sistemas de uma empresa
utiliza padres de projetos (design patterns) em seus
projetos orientados a objetos. Nesse contexto, NO uma
caracterstica o(a)
(A) uso de solues especficas e distintas para projetos similares.
(B) identificao de problemas comuns de projeto de software.
(C) utilizao de solues testadas e bem documentadas.
(D) utilizao eficiente de herana, polimorfismo e composio.
(E) facilidade na converso de um modelo de anlise em um modelo de
implementao.

Fernando Pedrosa Lopes 20


(SERPRO - CESPE 2010)
[82] O emprego de padres de projeto reusveis, como faade, builder
e singleton, uma prtica com nvel inferior de abstrao, quando
comparado ao emprego de estilos arquiteturais de software, como
camadas, cliente-servidor e peer-to-peer.

Fernando Pedrosa Lopes 21


Fernando Pedrosa Lopes 22
Proporciona uma interface para criar
famlias de objetos relacionados ou
dependentes sem especificar suas
classes concretas
Use Abstract Factory quando:
O sistema deve ser configurado com uma
de mltiplas famlias de produtos
Estes produtos relacionados so
projetados para serem utilizados juntos, e
voc quer garantir essa restrio

Fernando Pedrosa Lopes 23


Famlia de produtos #2
Famlia de produtos #1

Fernando Pedrosa Lopes 24


Fbrica abstrata

Fbricas concretas

Produto abstrato

Produtos concretos

Fernando Pedrosa Lopes 25


A fbrica escolhida
em tempo de
execuo

Fernando Pedrosa Lopes 26


(CENSIPAM - CESPE 2006)
[57-I] Um software est sendo desenvolvido e algumas decises foram
tomadas quando do seu projeto. A seguir, tem-se as decises I, II e III
que devero ser atendidas usando-se padres de projeto (design
patterns) adequados.

I Os formatos dos dados de entrada sero validados por mtodos nas


classes que os modelam. Por exemplo, para validar uma senha, a classe
Senha ter um mtodo apropriado. Como o software ser fornecido
para clientes cujos dados tero diferentes formatos, essas classes
devem ser substitudas em conjunto e essas substituies no devem
resultar em alteraes nos cdigos que instanciam essas classes

A deciso I pode ser atendida usando-se o padro de projeto


Abstract Factory;

Fernando Pedrosa Lopes 27


Separa a construo de um objeto
complexo da sua representao, de
forma que o mesmo processo possa criar
diferentes tipos de representaes
Use Builder quando:
O algoritmo para criar um objeto deve ser
independente de suas partes e de como
elas so montadas
Dica: enquanto Abstract Factory enfatiza
famlias de objetos, Builder constri
partes de objetos passo a passo

Fernando Pedrosa Lopes 28


Coordena a sequncia de construo dos objetos

Constri e junta as
partes dos objetos

Partes a serem
construdas

Fernando Pedrosa Lopes 29


Produto a ser construdo

Partes do produto

Classe construtora
abstrata (genrica)

Mtodos para
construir cada parte

Fernando Pedrosa Lopes 30


Classe construtora concreta (especfica).
Constri as partes do produto

Classe diretora.
Coordena a ordem de
construo das partes

Fernando Pedrosa Lopes 31


Seta o builder na classe Constri as partes Retorna o objeto
diretora construdo

Fernando Pedrosa Lopes 32


(IRB - ESAF 2006)
[58-I] A inteno do Padro de Projeto Builder, tambm conhecido
como Command, adaptar a interface de uma ou mais classes para
permitir que classes com interfaces incompatveis possam interagir.

(BACEN - CESGRANRIO 2010)


[33-B] Builder garante que uma classe seja instanciada somente uma
vez, fornecendo tambm um ponto de acesso global.

(SERPRO CESPE 2010)


[88] No padro builder, a responsabilidade pela criao de instncias
compartilhada por um diretor e um construtor, sendo o vnculo entre
eles estabelecido pelo cliente do padro.

Fernando Pedrosa Lopes 33


Define uma interface para criar um
objeto, mas deixa as subclasses
decidirem qual classe instanciar
Use Factory Method quando
Uma classe no pode antecipar a classe de
objetos que ela deve criar
Uma classe quer que suas subclasses
especifiquem os objetos que ela cria

Fernando Pedrosa Lopes 34


Fernando Pedrosa Lopes 35
Produto abstrato

Produto concreto

Produto concreto

Factory

Fernando Pedrosa Lopes 36


Que saudao devemos usar, Senhor
ou Senhora?

Em vez de usar vrios ifs, deixamos


para a Fbrica decidir!

Fernando Pedrosa Lopes 37


(INFRAERO - FCC 2009)
[53] NO um elemento contido no padro de projeto Factory Method
(A) Product.
(B) ConcreteProduct.
(C) Director.
(D) Creator.
(E) ConcreteCreator.

(TRE/MS - FCC 2007)


[50-C] Mtodo Fbrica prov a habilidade de retornar o estado do
objeto a seu estado anterior.

Fernando Pedrosa Lopes 38


Especifica os tipos de objetos para
criar usando uma instncia prototpica,
e cria novos objetos copiando este
prottipo (clonando o objeto original)
Use Prototype quando:
O sistema possui componentes cujo
estado inicial tem poucas variaes, e
conveniente disponibilizar um conjunto
pr estabelecido de prottipos que do
origem aos objetos que compem o
sistema

Fernando Pedrosa Lopes 39


Fernando Pedrosa Lopes 40
Prottipo abstrato

Prottipos
concretos

Classe cliente

Baseado no tipo
passado como
parmetro, so
retornados clones
dos objetos originais

Fernando Pedrosa Lopes 41


(IRB - ESAF 2006)
[58-III] A inteno do Padro de Projeto Prototype permitir a criao
de famlias de objetos relacionados ou dependentes atravs de uma
nica interface e sem que a classe concreta seja especificada. Por
exemplo, cria-se uma classe abstrata que declara uma interface
genrica para criao dos controles visuais e uma classe abstrata para
criao de cada tipo de controle. Em cada um dos padres tecnolgicos
contemplados existir uma classe concreta que dever conter a
implementao relativa a cada controle.

Fernando Pedrosa Lopes 42


Garante que uma classe tem apenas
uma instncia e prov um ponto de
acesso global a ela
Use Singleton quando:
Deve haver exatamente uma instncia de
uma classe, e ela deve ser acessvel aos
clientes a partir de um ponto de acesso
conhecido

Fernando Pedrosa Lopes 43


Fernando Pedrosa Lopes 44
Este o nico modo de
acessar a instncia
singular da classe

Fernando Pedrosa Lopes 45


(IRB - ESAF 2006)
[58-II] A inteno do Padro de Projeto Singleton garantir que exista
apenas uma instncia de sua classe.

(BNDES - CESGRANRIO 2009)


[53] Por motivo de segurana, deseja-se adicionar registro (log) das
operaes efetuadas no sistema de contabilidade de uma empresa. O
arquiteto do sistema decide que deve existir somente uma instncia de
uma classe de registro (log) e que esta ser o ponto de acesso global
para os demais componentes do sistema. Que padro de projeto pode
ser utilizado nesse caso?
(A) Iterator (B) Visitor (C) Bridge (D) Memento (E) Singleton

Fernando Pedrosa Lopes 46


Fernando Pedrosa Lopes 47
Converte a interface de uma classe em
outra interface que normalmente no
poderiam trabalhar juntas
Use o Adapter quando:
Voc quer usar uma classe existente, e sua
interface no adequada quela que voc
precisa

Fernando Pedrosa Lopes 48


Fernando Pedrosa Lopes 49
Classe alvo (target): o
que o cliente possui

Classe adaptada
(adaptee): o que o
cliente necessita

Adaptador

Fernando Pedrosa Lopes 50


O cliente faz a chamada usando o plug de dois
pinos, que o que ele enxerga, mas na verdade esta
chamada est sendo adaptada para um plug de
trs pinos

Fernando Pedrosa Lopes 51


(DATAPREV - CESPE 2006)
[68] As seguintes situaes justificam o uso do padro Adapter:
necessrio um objeto local que se faa passar por um objeto localizado
em outro espao de endereamento; necessrio controlar o acesso a
um objeto; um objeto persistente deve ser carregado em memria
somente quando for referenciado.

(SERPRO - CESPE 2008)


[115] Adapter um padro estrutural utilizado para compatibilizar
interfaces de modo que elas possam interagir.

Fernando Pedrosa Lopes 52


Desacopla uma interface de sua
implementao, de forma que elas
possa variar independentemente
Use o Bridge quando:
Voc quer evitar um vnculo entre a
abstrao e a implementao
Mudanas na implementao de uma
abstrao no deveriam ter impacto nos
clientes, isto , seu cdigo no deveria ser
recompilado

Fernando Pedrosa Lopes 53


Fernando Pedrosa Lopes 54
Classes que implementam a API de desenho.
A implementao pode variar livremente

Fernando Pedrosa Lopes 55


Note como a abstrao de
Implementao passada para c

Essas so as classes que o cliente enxerga.


Ele quer usar suas funcionalidades, mas a
implementao pode variar, como vimos no
slide passado.

Fernando Pedrosa Lopes 56


possvel variar a implementao da
abstrao, sem impacto no cliente

Fernando Pedrosa Lopes 57


(IRB - ESAF 2006)
[58-IV] A inteno do Padro de Projeto Bridge garantir, quando
desejvel, que uma interface possa variar independentemente das suas
implementaes, como por exemplo, na implementao de um sistema
grfico de janelas.

(BACEN - CESGRANRIO 2010)


[33-A] Bridge separa a construo de um objeto complexo de
sua representao, de modo que o mesmo processo de construo
possa criar diferentes representaes.

Fernando Pedrosa Lopes 58


(BNDES - CESGRANRIO 2009)
[60] Ao consultar informaes a respeito dos padres de projeto
Adapter e Bridge, um Analista de Sistemas identificou uma afirmativa
INCORRETA. Assinale-a.

(A) Ambos promovem a flexibilidade ao fornecer um nvel de


endereamento indireto para outro objeto.
(B) Ambos so padres estruturais que possuem alguns atributos em
comum.
(C) O foco do Adapter a soluo de incompatibilidades entre duas
interfaces existentes.
(D) O Adapter inferior ao Bridge porque no evita a replicao de
cdigo.
(E) O Bridge estabelece uma ponte entre uma abstrao e suas
possveis implementaes.

Fernando Pedrosa Lopes 59


Compe zero ou mais objetos
similares de forma que eles possam
ser manipulados como um s
Use Composite quando:
Voc quer representar hierarquias parte-
todo de objetos
Voc quer que o cliente ignore a diferena
entre objetos compostos e objetos
individuais

Fernando Pedrosa Lopes 60


Fernando Pedrosa Lopes 61
Classe composta

Classe folha

Fernando Pedrosa Lopes 62


Note que, para o
cliente, tanto faz
manipular uma folha
ou uma composio
de objetos

Fernando Pedrosa Lopes 63


(TRE/MS - FCC 2007)
[50-D] Composite realiza a adaptao da interface de uma determinada
classe para a interface que um cliente espera.

(TRE/AP - CESPE 2007)


[11-II] A implementao de montadores de rvores sintticas apia-
se mais no uso do padro Singleton que no uso do padro Composite.

Fernando Pedrosa Lopes 64


Anexa responsabilidades adicionais a
um objeto dinamicamente
Decoradores fornecem uma alternativa
flexvel em relao a herana para
estender funcionalidades
Use o Decorator quando:
Quiser adicionar responsabilidades a
objetos dinamicamente
Quando a extenso por subclasses
impraticvel

Fernando Pedrosa Lopes 65


Fernando Pedrosa Lopes 66
O decorator adiciona
novos comportamentos

Fernando Pedrosa Lopes 67


Este mtodo pintar() combina o comportamento
base mais o comportamento decorado

Fernando Pedrosa Lopes 68


(INMETRO - CESPE 2009)
[88-C] Caso se adote o padro Decorator para adicionar
responsabilidades a um conjunto de instncias que possuem uma
superclasse comum denominada X, ento, quando um objeto da classe
X for decorado por uma instncia de uma classe qualquer Y, os
mtodos presentes na classe X no estaro presentes na interface de Y.

Fernando Pedrosa Lopes 69


Prov um substituto ou ponto atravs
do qual um objeto possa controlar o
acesso a outro
Use Proxy quando:
Toda vez que h uma necessidade de uma
referncia mais verstil ou sofisticada do
que um simples ponteiro para um objeto

Fernando Pedrosa Lopes 70


Fernando Pedrosa Lopes 71
Objeto real

Proxy

Fernando Pedrosa Lopes 72


(Min. Comunicaes - CESPE 2008)
[99] O padro proxy est corretamente documentado no seguinte
diagrama UML.

Fernando Pedrosa Lopes 73


Prov uma interface unificada para um
conjunto de interfaces de um
subsistema
Define uma interface de mais alto nvel
que torna o subsistema mais fcil de
manipular
Use o Faade quando
Voc quiser prover uma interface simples
para um subsistema complexo

Fernando Pedrosa Lopes 74


Fernando Pedrosa Lopes 75
Partes complexas,
com vrias
interfaces

Interface unificada
na Faade

Fernando Pedrosa Lopes 76


(BNDES - CESGRANRIO 2009)
[59] O presidente de uma empresa determinou que fosse
disponibilizado um sistema de vendas na Internet. No entanto, o
software de controle de estoque que deve ser acessado pela aplicao
de vendas muito antigo e prov uma API (Application Programming
Interface) de uso muito complicado. Para que os desenvolvedores
possam acessar uma interface mais simples, o arquiteto do sistema
pode determinar o uso do padro de projeto

(A) Prototype.
(B) Decorator.
(C) Observer.
(D) Faade.
(E) Flyweight.

Fernando Pedrosa Lopes 77


Usa compartilhamento para suportar
grandes quantidades de objetos, de
granularidade fina, de maneira
eficiente
Use o Flyweight quando
Uma aplicao utiliza um grande nmero
de objetos e o custo para armazen-los
muito alto
A maioria dos estados dos objetos pode
ser tornada extrnseca

Fernando Pedrosa Lopes 78


Fernando Pedrosa Lopes 79
Objeto Flyweight

Factory de Flyweights

Fernando Pedrosa Lopes 80


A fbrica retorna os Flyweights para o cliente, que os utiliza
passando uma configurao de contexto.

Fernando Pedrosa Lopes 81


(MPE/BA FESMIP/BA 2011)
[51] O Design Pattern que tem a finalidade de usar compartilhamento
para suportar grandes quantidades de objetos, de granularidade fina,
de maneira eficiente, denominado

a) Strategy
b) Composite
c) Flyweight
d) State
e) Builder

Fernando Pedrosa Lopes 82


Fernando Pedrosa Lopes 83
Define uma famlia de algoritmos,
encapsula cada um, e faz deles
intercambiveis
Use Strategy quando:
Vrias classes relacionadas diferem apenas
em seus comportamentos
Voc precisa de diferentes variantes de um
algoritmo
Uma classe define muitos comportamentos
e eles aparecem como declaraes
condicionais nas suas operaes

Fernando Pedrosa Lopes 84


Fernando Pedrosa Lopes 85
Estratgias diferentes

Classe de contexto

Fernando Pedrosa Lopes 86


Diferentes variaes de algoritmos, apenas configurando
a estratgia, sem a necessidade de estruturas de seleo

Fernando Pedrosa Lopes 87


(TRE/MS - FCC 2007)
[50-B] Strategy permite a criao de uma famlia de algoritmos
encapsulados na forma de objetos que podem ser selecionados e
substitudos dinamicamente pela aplicao.

(INMETRO - CESPE 2009)


[88-D] Caso se deseje incorporar a um software um conjunto de
algoritmos de uma mesma famlia, os quais so aplicveis de forma
intercambivel a um agregado de objetos similares, no qual o conjunto
passvel de expanso em tempo de manuteno do software, ento
mais recomendada a adoo do padro Composite.

Fernando Pedrosa Lopes 88


Evita o acoplamento do remetente de
uma solicitao ao seu receptor
Encadeia os objetos receptores,
passando a solicitao ao longo da
cadeira at que um objeto a trate
Use o Chain of Responsibility quando:
Voc quer emitir uma solicitao para um
dentre vrios objetos, sem especificar
explicitamente o receptor

Fernando Pedrosa Lopes 89


Fernando Pedrosa Lopes 90
Handler genrico

Handlers concretos
Fernando Pedrosa Lopes 91
J1

J2

J3
B1

Fernando Pedrosa Lopes 92


(BACEN CESGRANRIO 2010)
[33] Um arquiteto de software estuda que padres de projeto so
apropriados para o novo sistema de vendas de uma empresa. Ele deve
considerar que o padro
a) Bridge separa a construo de um objeto complexo de sua
representao, de modo que o mesmo processo de construo possa
criar diferentes representaes.
b) Builder garante que uma classe seja instanciada somente uma vez,
fornecendo tambm um ponto de acesso global.
c) Singleton separa uma abstrao de sua implementao, de modo
que os dois conceitos possam variar de modo independente.
d) Chain of Responsibility evita o acoplamento entre o remetente de
uma solicitao e seu destinatrio, dando oportunidade para mais de
um objeto tratar a solicitao.
e) Template Method utiliza compartilhamento para suportar,
eficientemente, grandes quantidades de objetos de granularidade
fina.

Fernando Pedrosa Lopes 93


Fornece um meio de acessar
sequencialmente os elementos de um
objeto agregado sem expor a sua
representao subjacente
Use Iterator quando:
Voc quer acessar o contedo de uma
coleo sem expor a sua representao
interna

Fernando Pedrosa Lopes 94


Fernando Pedrosa Lopes 95
hasNext() => IsDone()
next () => Next() seguido por CurrentItem()
Note que no h First(). First() feito automaticamente
quando o iterador criado.

Fernando Pedrosa Lopes 96


(TJ/PI - FCC 2009)
[59]
I. o responsvel pela especificao dos tipos de objetos a serem
criados usando uma "instncia" prototpica e pela criao de novos
objetos copiando este prottipo.
II. Define uma interface de nvel mais alto que torna o subsistema mais
fcil de usar e fornece uma interface nica para um subsistema com
diversas interfaces; compe o grupo de padres estruturais.
III. Integrante do grupo de padres comportamentais, ele prov uma
forma de acessar sequencialmente os elementos de um agregado de
objetos, sem expor a representao interna desse agregado.
IV. As consequncias do uso deste padro que o encapsulamento
mantido, j que objetos usam sua prpria informao para cumprir
responsabilidades; leva ao fraco acoplamento entre objetos e alta
coeso, uma vez que objetos fazem tudo que relacionado sua
prpria informao.

Fernando Pedrosa Lopes 97


As afirmaes correspondem, respectivamente, aos padres

a) Command, Iterator, Singleton e Expert.


b) Controller, Expert, Singleton e Prototype.
c) Command, Singleton, Controller e Faade.
d) Prototype, Faade, Iterator e Expert.
e) Adapter, Faade, Command e Iterator.

Fernando Pedrosa Lopes 98


Permite que um objeto mude o seu
comportamento quando o seu estado
interno mudar
O objeto parecer ter mudado de
classe
Use State quando:
O comportamento de um objeto depende
do seu estado, e ele deve mudar este
comportamento em tempo de execuo de
acordo com este estado

Fernando Pedrosa Lopes 99


Fernando Pedrosa Lopes 100
Fernando Pedrosa Lopes 101
Fernando Pedrosa Lopes 102
(COPEVE-UFAL UFAL 2011)
[51] O diagrama de classes apresentado na figura a seguir no
Representa fielmente um buffer que passa por estados sucessivos de
transformao. Em outras palavras, um buffer, que est inicialmente
vazio, depois pode ficar parcialmente cheio e, possivelmente, pode
ficar cheio. Dentre as opes apresentadas a seguir, qual o padro de
projetos que melhor se adequaria para modelar essa caracterstica
dinmica do buffer?

a) Singleton.
b) Dynamic behavior.
c) Mediator.
d) Composite.
e) State.

Fernando Pedrosa Lopes 103


Encapsula uma requisio como um
objeto, deixando-o, dessa forma,
parametrizar os clientes com
diferentes requisies
Use o Command para:
Parametrizar objetos para realizar alguma
ao
Suportar undo
Suportar transaes

Fernando Pedrosa Lopes 104


Fernando Pedrosa Lopes 105
O invoker controla os comandos.
Aqui eles so genricos, para ser
possvel vari-los mais tarde

Comando genrico (abstrato)

Fernando Pedrosa Lopes 106


Fernando Pedrosa Lopes 107
Fernando Pedrosa Lopes 108
(INMETRO CESPE 2009)
[101] O uso do padro Command apresenta consequncias como um
objetoCommand usualmente refratrio ao enfileiramento; um objeto
Command usualmente transiente, isto , no passvel de
serializao e o uso disseminado de Commands dificulta a estruturao
de um sistema em operaes de alto nvel.

Fernando Pedrosa Lopes 109


Define uma dependncia entre objetos
de forma que quando um objeto muda
de estado, todos os seus dependentes
so notificados e atualizados
automaticamente
Use o Observer quando
Quando uma mudana em um objeto
requer mudanas em outros objetos e voc
no sabe quantos objetos sero mudados

Fernando Pedrosa Lopes 110


Fernando Pedrosa Lopes 111
Notificador
abstrato

Observador
abstrato

Fernando Pedrosa Lopes 112


Notificador
concreto

Mudana de estado

Notificao

Fernando Pedrosa Lopes 113


Observador
concreto

Fernando Pedrosa Lopes 114


Fernando Pedrosa Lopes 115
(TRE/MS - FCC 2007)
[50-A] Um exemplo de padro de projetos apresentado pelo Gang of
Four (GOF) o Observer, que utilizado quando se faz necessria a
instanciao de um e apenas um objeto de uma determinada classe.

(Casa da Moeda - CESGRANRIO 2009)


[26] Em determinado sistema de anlise estatstica, necessrio
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.
Que padro de projeto pode ser utilizado nessa situao?
(A) AJAX (B) Memento (C) Singleton (D) Observer (E) JSON

Fernando Pedrosa Lopes 116


Representa uma operao a ser
executada sobre os elementos da
estrutura de um objeto
Permite definir uma nova operao
sem mudar as classes dos elementos
sobre os quais opera
Use Visitor quando:
Muitas operaes distintas e no
relacionadas precisarem ser executadas
sobre uma estrutura de objetos

Fernando Pedrosa Lopes 117


Fernando Pedrosa Lopes 118
Visitor (abstrato)
Elemento (abstrato)

Elementos concretos.
Sero visitados pelo Visitor.

Fernando Pedrosa Lopes 119


Estrutura de objetos

Visitor concreto
(poderia haver
outros um para
cada operao)

Fernando Pedrosa Lopes 120


Ao percorrer os elementos que o aceitam, o Visitor pode
executar operaes diferentes sobre eles

Fernando Pedrosa Lopes 121


(TRE/AP CESPE 2007)
[34-III] A implementao de tratadores de eventos de interface grfica
apia-se mais no uso do padro Observer que no uso do padro
Visitor.

Fernando Pedrosa Lopes 122


Sem violar o encapsulamento, captura
e externaliza o estado interno de um
objeto, de forma que ele possa ser
recuperado depois
Use Memento quando:
Uma "fotografia" (parte) do objeto precisa
ser salva, de forma que ela possa ser
recuperada depois

Fernando Pedrosa Lopes 123


Fernando Pedrosa Lopes 124
Esta a classe que vai ter a
sua fotografia salva

Esta a classe que vai guardar


uma fotografia

Fernando Pedrosa Lopes 125


Fernando Pedrosa Lopes 126
(PETROBRAS CESGRANRIO 2006)
[37] Quanto indicao para o uso dos padres de projeto FALSO
afirmar que o padro:
a) Abstract Factory indicado quando: um sistema deve ser
independente de como seus produtos so criados, compostos ou
representados; um sistema deve ser configurado como um produto
de uma famlia de mltiplos produtos; uma famlia de objetos-
produto for projetada para ser usada em conjunto, e voc necessita
garantir esta restrio; voc quer fornecer uma biblioteca de classes
de produtos e quer revelar somente suas interfaces, no suas
implementaes.
b) Builder indicado quando: uma classe no pode antecipar a classe
de objetos que deve criar; uma classe quer que suas subclasses
especifiquem os objetos que criam; classes delegam
responsabilidade para uma dentre vrias subclasses auxiliares, e
voc quer localizar o conhecimento de qual subclasse auxiliar que
a delegada.

Fernando Pedrosa Lopes 127


c) Mediator indicado quando: um conjunto de objetos se comunica
de maneiras bem definidas, porm complexas; a reutilizao de um
objeto difcil porque ele referencia e se comunica com muitos
outros objetos; um comportamento que est distribudo entre vrias
classes deveria ser customizvel, ou adaptvel, sem excessiva
especializao em subclasses.
d) Memento indicado quanto: um instantneo de estado de um
objeto deve ser salvo de maneira que possa ser restaurado para esse
estado mais tarde; uma interface direta para obteno do estado
exporia detalhes de implementao e romperia o encapsulamento do
objeto.
e) Composite indicado quando: quiser representar hierarquias
partes-todo de objetos; quiser que os clientes sejam capazes de
ignorar a diferena entre composies de objetos e objetos
individuais, neste caso, os clientes trataro todos os objetos na
estrutura composta de maneira uniforme

Fernando Pedrosa Lopes 128


Define um objeto que encapsula a forma
como um conjunto de objetos interage
Promove o acoplamento fraco ao evitar que
os objetos se refiram explicitamente uns
aos outros
Use Mediator quando:
Um conjunto de objetos se comunica de maneira
bem-definida,porm complexas
O reso de um objeto difcil, porque ele
referencia e se comunica com muitos outros
objetos

Fernando Pedrosa Lopes 129


Fernando Pedrosa Lopes 130
Define a interface de
comunicao entre
objetos da classe Colleague

Super Classe de colegas

Fernando Pedrosa Lopes 131


Mediator Concreto
para o Chat

Vrios tipos de colegas

Fernando Pedrosa Lopes 132


Na verdade, na implementao do mtodo send, o Mediator est
sendo chamado, e ele quem se responsabiliza por coordenar a
comunicao entre os vrios colegas

Fernando Pedrosa Lopes 133


(UNEAL - COPEVE 2010)
29. Definir um objeto que encapsula a forma como um conjunto de
objetos interage. Promove o acoplamento fraco ao evitar que os
objetos se refiram uns aos outros explicitamente. Qual opo abaixo
corresponde descrio anterior?

A) Inteno do padro de projeto proxy


B) Inteno do padro de projeto composite
C) Inteno do padro de projeto strategy
D) Inteno do padro de projeto command
E) Inteno do padro de projeto mediator

Fernando Pedrosa Lopes 134


Define o esqueleto de um algoritmo em uma
operao, deferindo alguns passos para as
subclasses
Template Method permite que subclasses
redefinam certos passos de algum algoritmo
sem mudar a estrutura do algoritmo
Use Template Method para:
Implementar a parte invariante de um algoritmo
uma vez e deixar para as subclasses a
implementao do comportamento que pode
variar

Fernando Pedrosa Lopes 135


Fernando Pedrosa Lopes 136
Classe abstrata, com o mtodo
template definido

Classes concretas, com


implementaes especficas

Fernando Pedrosa Lopes 137


Executa-se o mesmo template
method, que ir executar um
bloco fixo de cdigo mais os
trechos variveis, definidos em
cada classe concreta

Fernando Pedrosa Lopes 138


(PETROBRAS - CESGRANRIO 2010)
[33] Um dos participantes da equipe de desenvolvimento de um
framework deve implementar uma operao em uma das classes
desse framework. Seja X o nome dessa classe. Essa operao
implementa um algoritmo em particular. Entretanto, h passos desse
algoritmo que devem ser implementados pelos usurios do
framework atravs da definio de uma subclasse de X. Sendo assim,
qual o padro de projeto do catlogo GoF (Gang of Four) a ser usado
pelo desenvolvedor do framework na implementao da referida
operao, dentre os listados a seguir?
a) Singleton.
b) Decorator.
c) Interpreter.
d) Template Method.
e) Observer.

Fernando Pedrosa Lopes 139


Dada uma linguagem, define uma
representao para sua gramtica
juntamente com um interpretador para
as sentenas dessa linguagem
Use Interpreter quando:
Houver uma linguagem para interpretar e
voc puder representar as sentenas da
linguagem como rvores sintticas
abstratas

Fernando Pedrosa Lopes 140


Fernando Pedrosa Lopes 141
Sabemos como reproduzir uma nota em determinada frequencia, e sabemos as
frequencias das notas. Mas como mapeamos uma Nota para uma determinada
Frequncia? Precisamos de um Interpreter.

Fernando Pedrosa Lopes 142


Fernando Pedrosa Lopes 143
(MEC FGV 2009)
[92] Os padres de projeto orientados a objeto podem ter finalidade de
criao, estrutural ou comportamental. Os padres de criao se
preocupam com o processo de criao de objetos. Os padres
estruturais lidam com a composio de classes ou de objetos. Os
padres comportamentais caracterizam as maneiras pelas quais
classes ou objetos interagem e distribuem responsabilidades.
Assinale a alternativa que apresenta apenas padres de projeto
comportamentais.

a) Prototype, Abstract Factory e Builder.


b) Singleton, Composite e Interpreter.
c) Mediator, Interpreter e Command.
d) Composite, Decorato e Proxy.
e) Proxy, Builder e Mediator.

Fernando Pedrosa Lopes 144


[1] - [52] B, [33] A, [82] C [12] - [99] E
[2] - [57-I] C [13] - [59] D
[3] - [58-I] E, [33-B] E, [88] C [14] - [51] C
[4] - [53] C, [50-C] E [15] - [50-B] C, [88-D] E
[5] - [58-III] E [16] - [33] D
[6] - [58-II] C, [53] E [17] - [59] D
[7] - [68] E, [115] C [18] - [51] E
[8] - [58-IV] C, [33-A] E [19] - [101] E
[9] - [60] D [20] - [50-A] E, [26] D
[10] - [50-D] E, [11-II] E [21] - [34-III] V
[11] - [88-C] E [22] - [37] B
[23] - [29] E
[24] - [33] D
[25] - [92] C

Fernando Pedrosa Lopes 145


Fernando Pedrosa Lopes 146

Você também pode gostar