Buscar

09 - padroes_projeto

Prévia do material em texto

W W W. D OMI NAND OTI .COM.B R WWW.DOMINANDOTI .COM.BR 
Padrões de Projeto 
GoF e Java EE 
Professor Marcelo Pacote – @profmarcelopacote 
W W W. D OMI NAND OTI .COM.B R 
Acesse nosso site em 
WWW.DOMINANDOTI.COM.BR 
 Curta o Dominando TI no 
e receba nossas dicas sobre concursos! 
Cursos Turmas em Brasília, na sua cidade, e cursos online 
Livros Edições publicadas, lançamentos e promoções 
Fórum Interação direta entre estudantes e com os professores 
Simulados Questões inéditas, ranking de notas e correções em vídeo 
Blog Dicas e macetes de estudo, indicações de bibliografia, etc. 
Materiais Versões atualizadas de notas de aula e listas de exercícios 
W W W. D OMI NAND OTI .COM.B R 
Agenda – Desenvolvimento de Sistemas 
 Padrões de Projeto 
 Padrões GOF 
 Padrões Java EE 
 
 
 
Professor Marcelo Pacote - @profmarcelopacote 3 
W W W. D OMI NAND OTI .COM.B R 
Padrões – Big Picture 
 Padrões de Arquitetura 
 MVC e outros. 
 Padrões de projeto 
 GoF 
 Java EE 
 Idiomas 
 
Professor Marcelo Pacote - @profmarcelopacote 4 
W W W. D OMI NAND OTI .COM.B R 
Exercício [01] (TCU/2009/CESPE) 
Com relação a conceitos de arquitetura e padrões de projeto JEE, julgue 
os próximos itens. 
( ) Para uma arquitetura de aplicações JEE, os padrões de projeto 
podem ser classificados em duas categorias: padrões de 
desenvolvimento geral de software e padrões que identificam desafios 
específicos J2EE. 
( ) No MVC (model-view-controller), um padrão recomendado para 
aplicações interativas, uma aplicação é organizada em três módulos 
separados. Um para o modelo de aplicação com a representação de 
dados e lógica do negócio, o segundo com visões que fornecem 
apresentação dos dados e input do usuário e o terceiro para um 
controlador que despacha pedidos e controle de fluxo. 
Professor Marcelo Pacote - @profmarcelopacote 5 
W W W. D OMI NAND OTI .COM.B R 
Exercício [02] (PETR/2011/CESGRANRIO) 
Qual é a arquitetura de software muito utilizada para desenvolvimento de 
aplicação web, onde a lógica da aplicação é implementada em uma camada 
separada da interface do usuário (entrada de dados e apresentação) e onde 
a comunicação entre as camadas se dá através de uma camada 
controladora? 
a) Arquitetura 3 camadas: cliente magro, servidor de aplicação e banco de 
dados 
b) Arquitetura Cliente / Servidor: cliente gordo e banco de dados 
c) Arquitetura de comunicação multicamadas 
d) Arquitetura MVC 
e) Arquitetura SOA 
Professor Marcelo Pacote - @profmarcelopacote 6 
W W W. D OMI NAND OTI .COM.B R 
Definição e Contextualização 
 Um padrão: 
 Uma forma ou modelo, proposta para imitação. 
 Alguma coisa projetada ou usada como um modelo 
para fazer coisas. 
 Um Padrão de Projeto é: 
 Uma estrutura que resolve um problema geral de 
projeto em um contexto particular. 
 
Professor Marcelo Pacote - @profmarcelopacote 7 
W W W. D OMI NAND OTI .COM.B R 
Padrões de Projeto 
 Maneira testada ou documentada de alcançar um objetivo qualquer: 
 Padrões são comuns em várias áreas da engenharia. 
 Design Patterns ou Padrões de Projeto: 
 Padrões para alcançar objetivos na engenharia de software usando 
classes e métodos em linguagens orientadas a objeto. 
 Inspirado em "A Pattern Language" de Christopher Alexander, sobre 
padrões de arquitetura de cidades, casas e prédios. 
 "Design Patterns" de Erich Gamma, John Vlissides, Ralph Jonhson e 
Richard Helm, conhecidos como "The Gang of Four", ou GoF, descreve 
23 padrões de projeto. 
Professor Marcelo Pacote - @profmarcelopacote 8 
W W W. D OMI NAND OTI .COM.B R 
Padrões de Projeto 
 "Cada padrão descreve um problema que ocorre repetidas 
vezes em nosso ambiente, e então descreve o núcleo da 
solução para aquele problema, de tal maneira que pode-se usar 
essa solução milhões de vezes sem nunca fazê-la da mesma 
forma duas vezes” 
 
Christopher Alexander, sobre padrões em Arquitetura 
 
Professor Marcelo Pacote - @profmarcelopacote 9 
W W W. D OMI NAND OTI .COM.B R 
Padrões de Projeto 
 "Os padrões de projeto são descrições de objetos que se 
comunicam e classes que são customizadas para resolver um 
problema genérico de design em um contexto específico” 
 
Gamma, Helm, Vlissides & Johnson, sobre padrões em software 
Professor Marcelo Pacote - @profmarcelopacote 10 
W W W. D OMI NAND OTI .COM.B R 
Exercício [03] (TRT-21/2010/CESPE/Técnico) 
( ) Os padrões de projeto podem ser definidos como soluções já 
testadas para problemas que ocorrem frequentemente durante 
o projeto de software. 
Professor Marcelo Pacote - @profmarcelopacote 11 
W W W. D OMI NAND OTI .COM.B R 
Padrões de Projeto - Vantagens 
 Aprender com a experiência dos outros. 
 Identificar problemas comuns em engenharia de software e utilizar soluções 
testadas e bem documentadas. 
 Utilizar soluções que têm um nome: facilita a comunicação, compreensão e 
documentação. 
 Aprender a programar bem com orientação a objetos. 
 Os 23 padrões de projeto mais conhecidos utilizam as melhores práticas em OO 
para atingir os resultados desejados. 
 Desenvolver software de melhor qualidade. 
 Os padrões utilizam eficientemente polimorfismo, herança, modularidade, 
composição, abstração para construir código reutilizável, eficiente, de alta coesão 
e baixo acoplamento. 
Professor Marcelo Pacote - @profmarcelopacote 12 
W W W. D OMI NAND OTI .COM.B R 
Exercício [04] (ANAC/2009/CESPE/Técnico) 
( ) O uso de padrões de projeto somente pode ser aplicado a 
projetos que implementam o paradigma de programação 
orientada a objetos. 
Professor Marcelo Pacote - @profmarcelopacote 13 
W W W. D OMI NAND OTI .COM.B R 
Exercício [05] (SENADO/2008/FGV) 
Considere as seguintes assertivas sobre as vantagens do uso de padrões de 
software (software patterns): 
I. Padrões de projeto proporcionam um vocabulário comum de projeto, 
facilitando comunicação, documentação e aprendizado dos sistemas de 
software. 
II. Padrões de projeto auxiliam no desenvolvimento de software por meio 
da reutilização do projeto de soluções computacionais já testadas e 
aprovadas. 
III. Uma biblioteca de padrões pode ajudar a melhorar e padronizar o 
desenvolvimento de software. 
As assertivas corretas são: 
a) somente II. b) somente I e II. c) somente I e III. 
d) somente II e III. e) I, II e III. 
 
Professor Marcelo Pacote - @profmarcelopacote 14 
W W W. D OMI NAND OTI .COM.B R 
Descrevendo um Padrão de Projeto 
 Nome (e classificação) 
 Intenção 
 Motivação 
Professor Marcelo Pacote - @profmarcelopacote 15 
 Aplicabilidade 
 Estrutura 
 Participantes 
 Colaborações 
 Consequências 
 Padrões relacionados 
W W W. D OMI NAND OTI .COM.B R 
Três Tipos de Padrões GoF 
 Padrões de Criação 
 Padrões Estruturais 
 Padrões Comportamentais 
Professor Marcelo Pacote - @profmarcelopacote 16 
W W W. D OMI NAND OTI .COM.B R 
Classificação segundo GoF 
Criação Estrutura Comportamento 
Builder 
Prototype 
Singleton 
Factory 
Method 
Abstract 
Factory 
 
Adapter 
Bridge 
Composite 
Decorator 
Facade 
Flyweight 
Proxy 
Interpreter 
Template Method 
Chain of Responsibility 
Command 
Iterator 
Mediator 
Memento 
Observer 
State 
Strategy 
Visitor 
Professor Marcelo Pacote - @profmarcelopacote 17 
W W W. D OMI NAND OTI .COM.B R 
Classificação – Sim. É necessário memorizar! 
Professor Marcelo Pacote - @profmarcelopacote 18 
W W W. D OMI NAND OTI .COM.B R 
Exercício [06] (RFB/ESAF/2012) 
Os padrões de projeto (Design Patterns)são classificados nas 
categorias: 
a) Situacional. Estrutural. Complementar. 
b) Criacional. Evolutiva. Contingencial. 
c) Compartimental. Vinculada. Comportamental. 
d) Criacional. Step-by-step. Orientada a requisitos. 
e) Criacional. Estrutural. Comportamental. 
Professor Marcelo Pacote - @profmarcelopacote 19 
W W W. D OMI NAND OTI .COM.B R 
Exercício [07] (BNDES/2008/CESGRANRIO) 
Ao alterar o estado de uma classe, o desenvolvedor deseja que uma 
ou mais classes da interface gráfica sejam modificadas. Entretanto, 
o desenvolvedor não acha interessante criar um acoplamento forte 
entre essas classes. Qual padrão de projeto comportamental é mais 
adequado para resolver essa situação? 
a) Composite 
b) Adapter 
c) Observer 
d) Abstract Factory 
e) Decorator 
Professor Marcelo Pacote - @profmarcelopacote 20 
W W W. D OMI NAND OTI .COM.B R 
Exercício [08] (AFC/2008/Esaf/Desv) 
Quanto à finalidade, os padrões de projeto podem ser 
classificados em padrões de criação, padrões de estrutura ou 
padrões comportamentais. Correspondem à categoria de padrões 
estruturais: 
a) Facade, Prototype e Proxy. 
b) Adapter, Composite e Proxy. 
c) Adapter, Factory Method e Template Method. 
d) Builder, Template Method e Strategy. 
e) Adapter, Bridge e Singleton. 
 
 Professor Marcelo Pacote - @profmarcelopacote 21 
W W W. D OMI NAND OTI .COM.B R 
Padrões de Projeto (GoF) 
1. Adapter 
 Converter a interface de uma classe em outra interface esperada pelos clientes. 
2. Façade 
 Oferecer uma interface única (e simples) de nível mais elevado para um conjunto 
de interfaces de um subsistema. 
3. Composite 
 Compõe objetos em estrutura de árvore para representar hierarquias do tipo 
todo-parte. Permitir o tratamento de objetos individuais e composições desses 
objetos de maneira uniforme. 
4. Bridge 
 Desacoplar uma abstração de sua implementação para que os dois possam variar 
independentemente. 
Professor Marcelo Pacote - @profmarcelopacote 22 
W W W. D OMI NAND OTI .COM.B R 
Padrões de Projeto (GoF) 
5. Singleton 
 Garantir que uma classe só tenha uma única instância, e 
prover um ponto de acesso global a ela. 
6. Observer 
 Definir uma dependência um-para-muitos entre objetos para 
que quando um objeto mudar de estado, os seus dependentes 
sejam notificados e atualizados automaticamente. 
7. Mediator 
 Definir um objeto que encapsula a forma como um conjunto de 
objetos interagem. 
Professor Marcelo Pacote - @profmarcelopacote 23 
W W W. D OMI NAND OTI .COM.B R 
Padrões de Projeto (GoF) 
8. Proxy 
 Prover um substituto ou ponto através do qual um objeto possa controlar o 
acesso a outro. 
9. Chain of Responsibility 
 Permitir que uma cadeia de objetos tenha oportunidade de tratar uma 
solicitação. Encadear objetos passando uma solicitação ao longo da cadeia 
até que um objeto a trate. 
10. Flyweight 
 Usar compartilhamento para suportar eficientemente grandes quantidades 
de objetos. 
11. Builder 
 Separar a construção de objeto complexo da representação para criar 
representações diferentes com mesmo processo. 
 
Professor Marcelo Pacote - @profmarcelopacote 24 
W W W. D OMI NAND OTI .COM.B R 
Padrões de Projeto (GoF) 
12. Factory Method 
 Definir uma interface para criar um objeto mas deixar que subclasses 
decidam que classe instanciar. Permite adiar a instanciação para subclasses. 
13. Abstract Factory 
 Prover interface para criar famílias de objetos relacionados ou dependentes 
sem especificar suas classes concretas. 
14. Prototype 
 Especificar tipos a criar usando uma instância como protótipo e criar novos 
objetos ao copiar este protótipo. 
15. Memento 
 Armazenar o estado interno de um objeto para que ele possa ter seu estado 
restaurado posteriormente (undo). 
Professor Marcelo Pacote - @profmarcelopacote 25 
W W W. D OMI NAND OTI .COM.B R 
Padrões de Projeto (GoF) 
16. Template Method 
 Definir o esqueleto de um algoritmo dentro de uma 
operação, deixando alguns passos serem preenchidos pelas 
subclasses. 
17. State 
 Permitir a um objeto alterar o seu comportamento quanto o 
seu estado interno mudar. 
18. Strategy 
 Definir uma família de algoritmos, encapsular cada um e 
fazê-los intercambiáveis. 
Professor Marcelo Pacote - @profmarcelopacote 26 
W W W. D OMI NAND OTI .COM.B R 
Padrões de Projeto (GoF) 
19. Command 
 Encapsular requisição como objeto, para clientes 
parametrizarem diferentes requisições. 
20. Interpreter 
 Dada uma linguagem, definir uma representação para sua 
gramática por meio de um interpretador. 
21. Decorator 
 Anexar responsabilidades adicionais a um objeto 
dinamicamente. 
Professor Marcelo Pacote - @profmarcelopacote 27 
W W W. D OMI NAND OTI .COM.B R 
Padrões de Projeto (GoF) 
22. Iterator 
 Prover uma maneira de acessar elementos de um objeto 
agregado sequencialmente sem expor sua representação 
interna. 
23. Visitor 
 Representar uma operação a ser realizada sobre os 
elementos de uma estrutura de objetos. Permite definir 
uma nova operação sem mudar as classes dos elementos 
nos quais opera. 
 
 
Professor Marcelo Pacote - @profmarcelopacote 28 
W W W. D OMI NAND OTI .COM.B R 
Exercício [09] (TRT-14/2011/FCC/Analista) 
No contexto dos padrões de projeto: 
I. Oferecer uma interface simples para uma coleção de classes. 
II. Desacoplar uma abstração de sua implementação para que ambas 
possam variar independentemente. 
 
Correspondem respectivamente a 
a) Façade e Bridge. 
b) Adapter e Façade. 
c) Composite e Bridge. 
d) Façade e Composite. 
e) Bridge e Adapter. 
Professor Marcelo Pacote - @profmarcelopacote 29 
W W W. D OMI NAND OTI .COM.B R 
Exercício [10] (TRT-24/2011/FCC) (1/2) - Adaptada 
Considere: 
 
I. Fornecer uma interface para criação de famílias de objetos 
relacionados ou dependentes, sem especificar suas classes 
concretas. 
 
II. Garantir a existência de apenas uma instância de uma classe, 
mantendo um ponto global de acesso ao seu objeto. 
 
 
Professor Marcelo Pacote - @profmarcelopacote 30 
W W W. D OMI NAND OTI .COM.B R 
III. Possibilitar o armazenamento do estado interno de um objeto em um 
determinado momento, para que seja possível retorná-lo a este estado, caso 
necessário. 
 
I, II e III são, respectivamente, objetivos dos design patterns intitulados: 
 
a) Interpreter, Iterator e Memento. 
b) Command, Singleton e Iterator. 
c) Abstract Factory, Singleton e Memento. 
d) Iterator, Factory Method e Flyweight. 
e) Singleton, Flyweight e Command. 
 
 
Exercício [10] (TRT-24/2011/FCC) (2/2) - Adaptada 
Professor Marcelo Pacote - @profmarcelopacote 31 
W W W. D OMI NAND OTI .COM.B R 
Exercício [11] (MEC/2009/FGV/Analista) (1/2) 
Em relação a padrões de projeto de software, assinale a 
afirmativa incorreta. 
 
a) Builder é um padrão utilizado quando se deseja separar a 
construção de um objeto complexo de sua representação de 
modo que o mesmo processo de construção possa criar 
diferentes representações. 
b) Factory Method é um padrão utilizado quando se deseja 
definir uma interface para criar um objeto e deixar as 
subclasses decidirem que classe instanciar. 
Professor Marcelo Pacote - @profmarcelopacote 32 
W W W. D OMI NAND OTI .COM.B R 
Exercício [11] (MEC/2009/FGV/Analista) (2/2) 
c) Adapter é um padrão utilizado quando se deseja converter a 
interface de uma classe em outra interface, esperada pelos 
clientes. 
d) Singleton é um padrão utilizado quando se deseja compor 
objetos em estrutura de árvore para representarem hierarquias 
partes-todo. 
e) Proxy é um padrão também conhecidocomo surrogate 
utilizado quando se deseja fornecer um substituto ou marcador 
da localização de outro objeto para controlar o acesso ao 
mesmo. 
Professor Marcelo Pacote - @profmarcelopacote 33 
W W W. D OMI NAND OTI .COM.B R 
Exercício [12] (BACEN/2010/CESGRANRIO) (1/2) 
Um arquiteto de software estuda que padrões de projeto são 
apropriados para o novo sistema de vendas de uma empresa. Ele 
deve considerar que o padrão 
 
a) Bridge separa a construção de um objeto complexo de sua 
representação, de modo que o mesmo processo de construção 
possa criar diferentes representações. 
b) Builder garante que uma classe seja instanciada somente uma 
vez, fornecendo também um ponto de acesso global. 
Professor Marcelo Pacote - @profmarcelopacote 34 
W W W. D OMI NAND OTI .COM.B R 
Exercício [12] (BACEN/2010/CESGRANRIO) (2/2) 
c) Singleton separa uma abstração de sua implementação, de 
modo que os dois conceitos possam variar de modo 
independente. 
d) Chain of Responsibility evita o acoplamento entre o 
remetente de uma solicitação e seu destinatário, dando 
oportunidade para mais de um objeto tratar a solicitação. 
e) Template Method utiliza compartilhamento para suportar, 
eficientemente, grandes quantidades de objetos de 
granularidade fina. 
Professor Marcelo Pacote - @profmarcelopacote 35 
W W W. D OMI NAND OTI .COM.B R 
Exercício [13] (EPE/2006/CESGRANRIO) (1/3) 
Considere os padrões que podem ser utilizados em um projeto de 
software e relacione os padrões com suas respectivas intenções 
primárias. 
Padrão: I - Bridge II – Builder III - Factory Method 
 
Intenção primária 
(P) Padrão estrutural cuja intenção é converter a interface de uma 
classe em outra interface, esperada pelos clientes, permitindo que 
classes com interfaces incompatíveis trabalhem em conjunto, o que, 
de outra forma, seria impossível. 
Professor Marcelo Pacote - @profmarcelopacote 36 
W W W. D OMI NAND OTI .COM.B R 
Exercício [13] (EPE/2006/CESGRANRIO) (2/3) 
(Q) Padrão estrutural cuja intenção é desacoplar uma abstração 
da sua implementação, de modo que as duas possam variar 
independentemente. 
(R) Padrão de criação cuja intenção é separar a construção de 
um objeto complexo da sua representação de modo que o 
mesmo processo de construção possa criar diferentes 
representações. 
(S) Padrão de criação cuja intenção é definir uma interface para 
criar um objeto, mas deixando as subclasses decidirem que 
classe instanciar. Ele permite adiar a instanciação para 
subclasses. 
Professor Marcelo Pacote - @profmarcelopacote 37 
W W W. D OMI NAND OTI .COM.B R 
Exercício [13] (EPE/2006/CESGRANRIO) (3/3) 
A relação correta é: 
a) I - P , II - Q , III - R 
b) I - P , II - Q , III - S 
c) I - Q , II - R , III - S 
d) I - Q , II - R , III - P 
e) I - Q , II - S , III - P 
 
Professor Marcelo Pacote - @profmarcelopacote 38 
W W W. D OMI NAND OTI .COM.B R 
Exercício [14] (Serpro/2013/Cespe) 
( ) O padrão de desenvolvimento comportamental denominado 
Iterator permite percorrer uma lista de objetos sem expor sua 
representação interna. 
( ) O padrão de projeto de software que limita o número 
máximo de instâncias de uma classe a somente uma instância 
é denominado Singleton. 
( ) O padrão de criação Prototype define um sistema sem 
funcionalidades inteligentes (acesso a banco de dados, por 
exemplo), podendo conter apenas funcionalidades gráficas. 
Além disso, é utilizado para fins de ilustração e melhor 
entendimento. 
Professor Marcelo Pacote - @profmarcelopacote 39 
W W W. D OMI NAND OTI .COM.B R 
Detalhamento [1] - Singleton 
 Intenção: “Garantir que uma classe só tenha uma única instância, e 
prover um ponto de acesso global a ela. [GoF]” 
 Questões: 
 Como controlar (contar) o número de instâncias da classe? 
 Como armazenar a(s) instância(s)? 
 Como controlar ou impedir a construção normal? Se for possível 
usar new e um construtor para criar o objeto, há como limitar 
instâncias? 
 Como definir o acesso a um número limitado de instâncias (no 
caso, uma apenas)? 
Professor Marcelo Pacote - @profmarcelopacote 40 
W W W. D OMI NAND OTI .COM.B R 
Singleton – Exemplo de código 
public class Singleton { 
 private Singleton() {} 
 private static Singleton instancia = null; 
 public static Singleton getInstancia () { 
 if (instancia == null) instancia = new Singleton(); 
 return instancia; 
 } 
 ... 
} 
Professor Marcelo Pacote - @profmarcelopacote 41 
Singleton 
- Singleton() 
+ getInstancia() : Singleton 
- instancia : Singleton 
W W W. D OMI NAND OTI .COM.B R 
Singleton em Java 
Professor Marcelo Pacote - @profmarcelopacote 42 
W W W. D OMI NAND OTI .COM.B R 
Exercício [15] (TJ-DF/2008/CESPE/Analista) 
( ) O padrão de projeto orientado a objetos denominado 
singleton exprime o fenômeno recorrente na análise que é a 
existência de muitas aplicações nas quais há um objeto que é a 
única instância de sua classe. 
Professor Marcelo Pacote - @profmarcelopacote 43 
W W W. D OMI NAND OTI .COM.B R 
Exercício [16] (BNDES/2009/CESGRANRIO) 
Por motivo de segurança, deseja-se adicionar registro (log) das 
operações efetuadas no sistema de contabilidade de uma 
empresa. O arquiteto do sistema decide que deve existir 
somente uma instância de uma classe de registro (log) e que 
esta será o ponto de acesso global para os demais 
componentes do sistema. Que padrão de projeto pode ser 
utilizado nesse caso? 
 
 
 
Professor Marcelo Pacote - @profmarcelopacote 44 
a) Iterator. 
b) Visitor. 
c) Bridge. 
d) Memento. 
e) Singleton. 
W W W. D OMI NAND OTI .COM.B R 
Exercício [17] (CGU/2012/Esaf/Desv) 
O padrão de projeto singleton é usado para restringir 
a) a instanciação de uma classe para objetos simples. 
b) a instanciação de uma classe para apenas um objeto. 
c) a quantidade de classes. 
d) as relações entre classes e objetos. 
e) classes de atributos complexos. 
 
Professor Marcelo Pacote - @profmarcelopacote 45 
W W W. D OMI NAND OTI .COM.B R 
Detalhamento [2] - Adapter 
 Problema: Como fazer com que duas classes com 
interfaces incompatíveis possam se falar? 
Professor Marcelo Pacote - @profmarcelopacote 46 
W W W. D OMI NAND OTI .COM.B R 
Adapter 
Professor Marcelo Pacote - @profmarcelopacote 47 
W W W. D OMI NAND OTI .COM.B R 
Adapter 
Professor Marcelo Pacote - @profmarcelopacote 48 
W W W. D OMI NAND OTI .COM.B R 
Exercício [18] (SERPRO/2008/CESPE/Analista) 
( ) Adapter é um padrão estrutural utilizado para compatibilizar 
interfaces de modo que elas possam interagir. 
Professor Marcelo Pacote - @profmarcelopacote 49 
W W W. D OMI NAND OTI .COM.B R 
Detalhamento [3] - Factory Method 
"Definir uma interface para criar um objeto mas deixar que 
subclasses decidam que classe instanciar. Permite adiar a 
instanciação para subclasses." [GoF] 
 
 
Professor Marcelo Pacote - @profmarcelopacote 50 
W W W. D OMI NAND OTI .COM.B R 
Factory Method – Exemplo de código (1/2) 
Professor Marcelo Pacote - @profmarcelopacote 51 
W W W. D OMI NAND OTI .COM.B R 
Factory Method – Exemplo de código (2/2) 
Professor Marcelo Pacote - @profmarcelopacote 52 
W W W. D OMI NAND OTI .COM.B R 
Exercício [19] (CGU/2012/Esaf/Desv) 
O padrão de projeto Factory provê uma classe de decisão que retorna 
a) um objeto de uma de suas subclasses, sem fixação de parâmetros. 
b) um atributo de uma de suas classes conexas, com base em um 
parâmetro reservado. 
c) um objeto de uma de suas subclasses, com base em um parâmetro 
recebido.d) um atributo de uma de suas classes conexas, sem fixação de 
parâmetros. 
e) um objeto de uma de suas subclasses, com parâmetros fatorados. 
Professor Marcelo Pacote - @profmarcelopacote 53 
W W W. D OMI NAND OTI .COM.B R 
Detalhamento [4] - Façade 
"Oferecer uma interface única para um conjunto de interfaces de 
um subsistema. Façade define uma interface de nível mais 
elevado que torna o subsistema mais fácil de usar." [GoF] 
Professor Marcelo Pacote - @profmarcelopacote 54 
W W W. D OMI NAND OTI .COM.B R 
Façade 
Cliente2 
Cliente1 Façade 
doSomething() 
Classe1 c1 = new Classe1(); 
Classe2 c2 = new Classe2(); 
Classe3 c3 = new Classe3(); 
c1.doStuff(c2); 
c3.setProp(c1.getProp2()); 
return c3.doStuff2(); 
Pacote1 
Classe1 
Pacote 2 
Classe2 
Pacote3 
Classe3 
Professor Marcelo Pacote - @profmarcelopacote 55 
W W W. D OMI NAND OTI .COM.B R 
Façade 
Professor Marcelo Pacote - @profmarcelopacote 56 
W W W. D OMI NAND OTI .COM.B R 
Exercício [20] (SERPRO/2008/CESPE/Analista) 
( ) Expert é um padrão que apresenta uma interface para várias 
funcionalidades de uma API de maneira simples e fácil de usar. 
Professor Marcelo Pacote - @profmarcelopacote 57 
W W W. D OMI NAND OTI .COM.B R 
Exercício [21] (INMETRO/2009/CESPE/Analista) 
( ) Alguns dos usos típicos do padrão Façade são a unificação 
das várias interfaces de um sistema complexo; a construção de 
pontos de entrada para cada uma das múltiplas camadas de um 
sistema; a redução de dependências entre um cliente e 
múltiplas classes de implementação e o encapsulamento de 
todas as demais interfaces públicas de um sistema. 
Professor Marcelo Pacote - @profmarcelopacote 58 
W W W. D OMI NAND OTI .COM.B R 
Exercício [22] (BNDES/2009/CESGRANRIO) 
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 aplicação 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 padrão de projeto 
 
Professor Marcelo Pacote - @profmarcelopacote 59 
a) Prototype. b) Decorator c) Observer. 
 
d) Façade. e) Flyweight. 
W W W. D OMI NAND OTI .COM.B R 
Detalhamento [5] - Template Method 
"Definir o esqueleto de um algoritmo dentro de uma 
operação, deixando alguns passos a serem preenchidos pelas 
subclasses. Template Method permite que suas subclasses 
redefinam certos passos de um algoritmo sem mudar sua 
estrutura.“ [GoF] 
Professor Marcelo Pacote - @profmarcelopacote 60 
W W W. D OMI NAND OTI .COM.B R 
Template Method 
 O que é um Template Method? 
 Um Template Method define um algoritmo em termos de 
operações abstratas que subclasses sobrepõem para 
oferecer comportamento concreto. 
 Quando usar? 
 Quando a estrutura fixa de um algoritmo puder ser 
definida pela superclasse deixando certas partes para 
serem preenchidos por implementações que podem variar. 
Professor Marcelo Pacote - @profmarcelopacote 61 
W W W. D OMI NAND OTI .COM.B R 
Template Method 
Concreto1 
# operacao1() 
# operacao2() 
… 
# operacaoN() 
Generico 
+ TemplateMethod() 
# operacao1() 
# operacao2() 
… 
# operacaoN() 
Concreto2 
# operacao1() 
# operacao2() 
… 
# operacaoN() 
Concreto3 
# operacao1() 
# operacao2() 
… 
# operacaoN() 
... 
operacao1(); 
... 
operacao2(); 
... 
operacaoN(); 
... 
Professor Marcelo Pacote - @profmarcelopacote 62 
W W W. D OMI NAND OTI .COM.B R 
Template Method 
public abstract class Template { 
public abstract String link(String texto, String url); 
public String transform(String texto) { return texto; } 
public String templateMethod() { 
 String msg = "Endereço: " + link("Empresa", "http://www.empresa.com"); 
 return transform(msg); 
} 
public class XMLData extends Template { 
public String link(String texto, String url) { 
 return "<endereco xlink:href='"+url+"'>"+texto+"</endereco>"; 
} 
} 
public class HTMLData extends Template { 
public String link(String texto, String url) { 
 return "<a href='"+url+"'>"+texto+"</a>"; 
} 
} 
Professor Marcelo Pacote - @profmarcelopacote 63 
W W W. D OMI NAND OTI .COM.B R 
Exercício [23] (PETROBRAS/2010/CESGRANRIO) 
Um dos participantes da equipe de desenvolvimento de um 
framework deve implementar uma operação em uma das classes 
desse framework. Seja X o nome dessa classe. Essa operação 
implementa um algoritmo em particular. Entretanto, há passos 
desse algoritmo que devem ser implementados pelos usuários do 
framework através da definição de uma subclasse de X. Sendo 
assim, qual o padrão de projeto do catálogo GoF (Gang of Four) a 
ser usado pelo desenvolvedor do framework na implementação da 
referida operação, dentre os listados a seguir? 
 
 
Professor Marcelo Pacote - @profmarcelopacote 64 
a) Singleton 
b) Decorator 
c) Interpreter 
 
d) Template Method 
e) Observer 
W W W. D OMI NAND OTI .COM.B R 
Detalhamento [6] - Strategy 
 Problema: Como alterar a implementação interna de um 
objeto dinamicamente? 
 
 Exemplos: Classes onde se tenham muitos comandos 
switch. Qualquer problema onde se tenha que tomar uma 
ação diferente dependendo de algum tipo ou valor. 
Professor Marcelo Pacote - @profmarcelopacote 65 
W W W. D OMI NAND OTI .COM.B R 
Strategy 
 Classe Ordenacao pode usar qualquer uma das estratégias, 
chamando o método ordena(). 
 
Professor Marcelo Pacote - @profmarcelopacote 66 
W W W. D OMI NAND OTI .COM.B R 
Exercício [24] (Inmetro/2009/Cespe) 
( ) Caso se deseje incorporar a um software um conjunto de 
algoritmos de uma mesma família, os quais são aplicáveis de 
forma intercambiável a um agregado de objetos similares, no 
qual o conjunto é passível de expansão em tempo de 
manutenção do software, então é mais recomendada a adoção 
do padrão Composite. 
Professor Marcelo Pacote - @profmarcelopacote 67 
W W W. D OMI NAND OTI .COM.B R 
Exercício [25] (CHESF/2012/CESGRANRIO) 
Durante o desenvolvimento de um sistema para suporte a uma rede social, 
um desenvolvedor decidiu criar a facilidade de uma pessoa ter uma lista de 
amigos para poder enviar e-mails, postagens e/ou fotos. Essa lista pode 
conter um número indefinido de amigos ou de outras listas de amigos, 
criando uma estrutura recursiva. 
O padrão de projeto que descreve essa estrutura é 
a) Abstract factory 
b) Chain of responsibility 
c) Composite 
d) Iterator 
e) Module 
Professor Marcelo Pacote - @profmarcelopacote 68 
W W W. D OMI NAND OTI .COM.B R 
[26] (PETRO/2012/CESGRANRIO/Eng. Software) (1/3) 
Deseja-se que uma aplicação possa manipular diferentes tipos de bancos de dados 
de modo transparente às classes que necessitam de serviços de acesso a dados. 
Inicialmente será necessário fornecer suporte a bancos de dados XML e SQL, 
entretanto novos tipos poderão ser futuramente adicionados. A solução proposta é a 
seguinte: 
1. Uma classe abstrata (DB) será responsável por instanciar um objeto 
correspondente ao tipo de banco de dados desejado.Isso será feito através do 
método estático getDB(), que irá retornar um objeto de uma de suas subclasses 
concretas, de acordo com o parâmetro (tipo) passado. 
2. O objeto criado no passo anterior irá instanciar conexões e consultas 
correspondentes ao tipo de DB criado; isto é, caso um DB XML tenha sido 
instanciado, apenas consultas XML e conexões XML serão instanciadas; caso um DB 
SQLtenhasido instanciado, apenas consultas SQL e conexões SQL serão 
instanciadas. 
Professor Marcelo Pacote - @profmarcelopacote 69 
W W W. D OMI NAND OTI .COM.B R 
[26] (PETRO/2012/CESGRANRIO/Eng. Software) (2/3) 
Professor Marcelo Pacote - @profmarcelopacote 70 
W W W. D OMI NAND OTI .COM.B R 
[26] (PETRO/2012/CESGRANRIO/Eng. Software (3/3) 
Qual padrão de projeto foi utilizado na solução proposta? 
a) Adapter 
b) Builder 
c) Composite 
d) Abstract Factory 
e) Chain of Responsibility 
Professor Marcelo Pacote - @profmarcelopacote 71 
W W W. D OMI NAND OTI .COM.B R 
[27] (PETRO/2012/CESGRANRIO/Eng. Software) (1/3) 
Um sistema está organizado segundo uma arquitetura em camadas, no 
qual cada camada corresponde a um pacote Java. 
A camada de serviços, ServiceLayer, possui dezenas de classes, que 
colaboram entre si para fornecer os serviços necessários. Para facilitar o 
acesso aos serviços disponíveis, o pacote em questão disponibiliza 
algumas interfaces, que agrupam operações de acordo com a natureza do 
serviço. 
As classes que implementam esses serviços, entretanto, não são visíveis 
fora do pacote. Dessa forma, o pacote fornece uma classe pública, 
Services, onde existem métodos estáticos que retornam objetos que 
implementam os serviços disponíveis. O código Java a seguir exemplifica 
o que foi descrito. 
Professor Marcelo Pacote - @profmarcelopacote 72 
W W W. D OMI NAND OTI .COM.B R 
[27] (PETRO/2012/CESGRANRIO/Eng. Software) (2/3) 
Professor Marcelo Pacote - @profmarcelopacote 73 
W W W. D OMI NAND OTI .COM.B R 
[27] (PETRO/2012/CESGRANRIO/Eng. Software) (3/3) 
O trecho de código a seguir mostra como os serviços disponíveis são 
executados. 
 
 
 
 
Essa arquitetura usou variações de dois padrões de projeto conhecidos, 
que são: 
Professor Marcelo Pacote - @profmarcelopacote 74 
a) Adapter e Façade 
b) Command e Façade 
c) Command e Singleton 
d) Façade e Factory Method 
e) Factory Method e Singleton 
W W W. D OMI NAND OTI .COM.B R 
Gabarito dos Exercícios 
[01] cc 
[02] d 
[03] certo 
[04] errado 
[05] e 
[06] e 
[07] c 
 
[08] b 
[09] a 
[10] c 
[11] d 
[12] d 
[13] c 
[14] cce 
 
[15] certo 
[16] e 
[17] b 
[18] certo 
[19] c 
[20] errado 
[21] errado 
 
Professor Marcelo Pacote - @profmarcelopacote 75 
[22] d 
[23] d 
[24] errado 
[25] c 
[26] d 
[27] d 
 
W W W. D OMI NAND OTI .COM.B R WWW.DOMINANDOTI .COM.BR 
Padrões de Projeto – Java EE 
76
Professor Marcelo Pacote – @profmarcelopacote 
W W W. D OMI NAND OTI .COM.B R 
Introdução 
Camada de Apresentação 
 Intercepting Filter 
 Front Controller 
 Context Object 
 Application Controller 
 View Helper 
 Composite View 
 Service to Worker 
 Dispatcher View 
Camada de Negócio 
 Business Delegate 
 Service Locator 
 Session Façade 
 Application Service 
 Business Object 
 Composite Entity 
 Transfer Object 
 Value List Handler 
 Transfer Object Assembler 
 
Camada de Integração 
 Data Access Object 
 Service Activator 
 Domain Store 
 Web Service Broker 
 
Professor Marcelo Pacote - @profmarcelopacote 77 
W W W. D OMI NAND OTI .COM.B R 
Classificação - Memorizar! 
Professor Marcelo Pacote - @profmarcelopacote 78 
W W W. D OMI NAND OTI .COM.B R 
Exercício [1] (MEC/2009/FGV/Arquiteto) (1/2) 
Assinale a alternativa que apresente apenas padrões de projeto 
utilizados na camada de apresentação no desenvolvimento de 
aplicações J2EE. 
a) Composite View, Context Object, Data Access 
Object,Composite Entity. 
b) Service Locator, Business Delegate, Business 
Object,Composite Entity. 
c) Application Controller, Intercepting Filter, Context 
Object,Composite View. 
 
Professor Marcelo Pacote - @profmarcelopacote 79 
W W W. D OMI NAND OTI .COM.B R 
Exercício [1] (MEC/2009/FGV/Arquiteto) (2/2) 
d) Intercepting Filter, Business Delegate, Service Locator, Data 
Access Object. 
 
e) Application Controller, Composite View, Service Locator 
,Business Delegate. 
Professor Marcelo Pacote - @profmarcelopacote 80 
W W W. D OMI NAND OTI .COM.B R 
Exercício [2] (MEC/2009/FGV/Desenvolvedor) (1/2) 
Assinale a alternativa que apresenta apenas padrões de projeto 
utilizados na camada de negócios no desenvolvimento de 
aplicações J2EE. 
a) Application Controller, Intercepting Filter, Context Object e 
Domain Store. 
b) Intercepting Filter, Business Delegate, Service Locator e Data 
Access Object. 
c) Composite View, Intercepting Filter, Data Access Object, 
Service Activator e Business Object. 
Professor Marcelo Pacote - @profmarcelopacote 81 
W W W. D OMI NAND OTI .COM.B R 
Exercício [2] (MEC/2009/FGV/Desenvolvedor) (2/2) 
d) Service Locator, Business Delegate, Business Object, 
Composite Entity e Value List Handler. 
e) Composite View, Context Object, Data Access Object e 
Composite Entity. 
 
Professor Marcelo Pacote - @profmarcelopacote 82 
W W W. D OMI NAND OTI .COM.B R 
Exercício [3] (MEC/2008/FGV/Arquiteto) 
J2EE (Java 2 Enterprise Edition), ou simplesmente JEE, é um 
plataforma java para desenvolvimento e execução de aplicações 
em nível corporativo. No desenvolvimento de aplicações J2EE é 
comum o uso de vários padrões de projeto. Assinale a 
alternativa que não apresente padrões de projeto 
frequentemente utilizados na camada de negócios J2EE. 
 
Professor Marcelo Pacote - @profmarcelopacote 83 
a) Context Object. 
b) Transfer Object. 
c) Service Locator. 
d) Session Façade. 
e) Business Delegate. 
 
W W W. D OMI NAND OTI .COM.B R 
Exercício [4] (MEC/2008/FGV/Desenv.) 
J2EE (Java 2 Enterprise Edition) é uma plataforma Java para 
desenvolvimento e execução de aplicações em nível 
corporativo. No desenvolvimento de aplicações J2EE é comum o 
uso de vários padrões de projeto. Assinale a alternativa que não 
apresente os padrões de projeto frequentemente utilizados na 
camada de apresentação J2EE. 
Professor Marcelo Pacote - @profmarcelopacote 84 
a) Application Controller. 
b) Intercepting Filter 
c) Composite View. 
d) Service Locator. 
e) Context Object. 
 
W W W. D OMI NAND OTI .COM.B R 
Padrões Java EE – Interception Filter 
 Problema 
 Interceptar e manipular uma requisição, antes e depois de 
seu processamento 
 Solução 
 Encadear filtros (fracamente acoplados) para pré-
processar requisições ou pós-processar respostas 
 O processamento é genérico é não invasivo 
 Aplicabilidade: 
 Infraestrutura de logging e controle transacional 
Professor Marcelo Pacote - @profmarcelopacote 85 
W W W. D OMI NAND OTI .COM.B R 
Padrões Java EE – Front Controller 
 Problema 
 Criar ponto de acesso centralizado para tratamento de 
requisições 
 Solução 
 Implementar JSP/Servlet como ponto de contato inicial 
para tratar um conjunto de requisições 
 Pode existir mais de um controlador 
 Aplicabilidade: 
 Aparece encapsulado por frameworks de mercado como 
Struts e JSF. 
Professor Marcelo Pacote - @profmarcelopacote 86 
W W W. D OMI NAND OTI .COM.B R 
Padrões Java EE – Context Object 
 Problema 
 Evitar o uso de informações de sistema específicas de um protocolo 
fora de seu contexto 
 Solução 
 Implementar Context Object para encapsular informações de estado 
de forma independente de protocolo, para que possa ser 
compartilhada pela aplicação. 
 Aplicabilidade: 
 Disponibilizar informações como o usuário logado em uma aplicação, 
seu idioma, mensagens de erro sem depender, por exemplo, de 
interação com a classe HttpSession. 
Professor Marcelo Pacote- @profmarcelopacote 87 
W W W. D OMI NAND OTI .COM.B R 
Padrões Java EE – Composite View 
 Problema 
 Construir a camada de apresentação a partir da combinação de 
componentes modulares e atômicos, gerenciando o conteúdo e o 
layout de forma independente. 
 Solução 
 Utilizar Composite Views compostas dinamicamente de múltiplas 
subviews atômicas. 
 Aplicabilidade: 
 Composição de páginas a partir de fragmentos. 
 Os frameworks Tiles, Facelets e Sitemesh implementam o padrão 
Professor Marcelo Pacote - @profmarcelopacote 88 
W W W. D OMI NAND OTI .COM.B R 
Padrões Java EE – Business Delegate 
 Problema 
 Isolar a aplicação cliente da complexidade da comunicação 
remota com componentes de negócio 
 Solução 
 Encapsular o acesso a um serviço de negócio, escondendo os 
detalhes de implementação. Acesso remoto é um objeto é feito 
da mesma forma que um objeto local. 
 Aplicabilidade: 
 Atuar como proxies para simplificar o acesso a componentes 
EJB. 
Professor Marcelo Pacote - @profmarcelopacote 89 
W W W. D OMI NAND OTI .COM.B R 
Padrões Java EE – Service Locator 
 Problema 
 Deseja-se localizar de forma transparente componentes e 
serviços de negócio de maneira uniforme. 
 Solução 
 Utilizar um Service Locator para implementar e encapsular 
a lógica de localização do componente ou serviço de 
negócio. 
 Aplicabilidade: 
 Simplificar a localização de recursos via JNDI. 
Professor Marcelo Pacote - @profmarcelopacote 90 
W W W. D OMI NAND OTI .COM.B R 
Padrões Java EE – Session Façade 
 Problema 
 Deseja-se expor componentes e serviços de negócio para 
clientes remotos 
 Solução 
 Encapsular componentes da camada de negócio e expor um 
serviço de alta granularidade para clientes remotos. 
 Aplicabilidade: 
 Prover componentes EJB que funcionem como serviços, 
coordenando a chamada a outros componentes EJB. 
Professor Marcelo Pacote - @profmarcelopacote 91 
W W W. D OMI NAND OTI .COM.B R 
Padrões Java EE – Transfer Object 
 Problema 
 Deseja-se transmitir múltiplos elementos de dados entre 
camadas. 
 Solução 
 Usar um Transfer Object para carregas múltiplos 
elementos de dados entre camadas. 
 Aplicabilidade: 
 Criar POJOs para evitar chamadas remotas a Entity beans, 
visando melhorar o desempenho. 
Professor Marcelo Pacote - @profmarcelopacote 92 
W W W. D OMI NAND OTI .COM.B R 
Padrões Java EE – Data Acess Object 
 Problema 
 Deseja-se encapsular acesso e manipulação de dados em uma 
camada separada. 
 Solução 
 Utilizar um Data Access Object para abstrair e encapsular todo o 
acesso ao armazenamento persistente. O Data Access Object 
gerencia a conexão com a fonte de dados para obter e armazenar 
dados. 
 Aplicabilidade: 
 Trata-se de um dos padrões Java EE mais utilizados. Uma aplicação 
comum é o encapsulamento de consultas JDBC. 
Professor Marcelo Pacote - @profmarcelopacote 93 
W W W. D OMI NAND OTI .COM.B R 
Exercício [05] (STF/2008/CESPE) (1/2) 
Professor Marcelo Pacote - @profmarcelopacote 94 
W W W. D OMI NAND OTI .COM.B R 
Exercício [05] (STF/2008/CESPE) (2/2) 
A figura anterior, adaptada de java.sun.com, ilustra a arquitetura de uma 
aplicação web desenvolvida na plataforma J2EE, tendo sido 
alguns de seus módulos nomeados de A até I. Considere que uma aplicação com 
a arquitetura mostrada tenha sido instalada em um 
servidor de aplicação JBoss 4.0 ou superior, por meio do deploy de um arquivo 
com nome aplicacao.war, e se encontre em pleno 
funcionamento. Com base nessas informações, julgue o item 
( ) Considere que, no cenário da aplicação mostrada, o framework Hibernate, 
versão 3.5, esteja em pleno uso. Nesse caso, considerando-se a prática 
recomendada no desenvolvimento de aplicações web, é correto afirmar que os 
módulos G e I não deverão importar classes do package org.hibernate, mas que 
o módulo H deverá importar classes e interfaces do package org.hibernate e, 
possivelmente, do package java.sql. 
Professor Marcelo Pacote - @profmarcelopacote 95 
W W W. D OMI NAND OTI .COM.B R 
Exercício [06] (TCU/2008/CESPE) (1/2) - adaptada 
Julgue os itens a seguir, relativos aos conceitos da arquitetura J2EE. 
 
( ) Considere que, durante o desenvolvimento de um CMS (Content 
Management System), tenha sido necessário controlar o acesso dos 
usuários a diversos portlets, de forma que menos da metade deles ficasse 
acessível apenas a usuários devidamente autenticados. Nesse caso, para 
se implementar um componente de controle do acesso, seria mais 
adequada, dos pontos de vista técnico, de flexibilidade e de facilidade de 
reuso e composição, a adoção do pattern intercepting Filter que a do 
pattern Front Controller. 
Professor Marcelo Pacote - @profmarcelopacote 96 
W W W. D OMI NAND OTI .COM.B R 
Exercício [06] (TCU/2008/CESPE) (2/2) - adaptada 
( ) Considere que, na arquitetura de um CMS, fosse necessária a criação 
de várias janelas de portlets que apresentam fragmentos agregados de 
forma hierárquica em uma única página. Nessa situação, o padrão que 
melhor representa uma solução para essa arquitetura é o Composite 
Entity. 
( ) Considere que, na arquitetura de CMS, seja necessária a implantação 
de um sistema de alta disponibilidade, baseado em clusters de servidores 
de aplicação onde ocorre balanceamento de carga na camada de 
negócios. Nessa situação, a lógica do sistema de balanceamento de 
carga, se implementada dentro do próprio CMS, estaria mais bem 
localizada dentro do elemento que adere ao padrão Business Delegate. 
Professor Marcelo Pacote - @profmarcelopacote 97 
W W W. D OMI NAND OTI .COM.B R 
Exercício [07] (CHESF/2012/CESGRANRIO) 
Em uma aplicação Java EE, na substituição de uma solução que usa o Transparent Façade por 
outra que usa o Session Façade, os clientes devem ser refatorados para interagir com objetos 
Data Transfer Object eventualmente criados durante essa substituição. 
PORQUE 
Em uma aplicação Java EE, o uso do Transparent Façade em vez do Session Façade aumenta a 
granularidade das funções definidas na fachada resultante. 
Analisando-se as afirmações acima, conclui-se que 
a) as duas afirmações são verdadeiras, e a segunda justifica a primeira. 
b) as duas afirmações são verdadeiras, e a segunda não justifica a primeira. 
c) a primeira afirmação é verdadeira, e a segunda é falsa. 
d) a primeira afirmação é falsa, e a segunda é verdadeira. 
e) as duas afirmações são falsas. 
Professor Marcelo Pacote - @profmarcelopacote 98 
W W W. D OMI NAND OTI .COM.B R 
Gabarito dos Exercícios 
[1] c 
[2] d 
[3] a 
[4] d 
[5] c 
[6] cee 
[7] c 
Professor Marcelo Pacote - @profmarcelopacote 99 
W W W. D OMI NAND OTI .COM.B R WWW.DOMINANDOTI .COM.BR 
ANEXO I 
Exercícios complementares – FGV 
Professor Marcelo Pacote – @profmarcelopacote 
W W W. D OMI NAND OTI .COM.B R 
Exercício [1] (MEC/2009/FGV/Arquiteto) (1/2) 
Em relação a padrões de projeto de software, assinale a 
afirmativa incorreta. 
a) Builder é um padrão utilizado quando se deseja separar a 
construção de um objeto complexo de sua representação de 
modo que o mesmo processo de construção possa criar 
diferentes representações. 
b) Factory Method é um padrão utilizado quando se deseja 
definir uma interface para criar um objeto e deixar as 
subclasses decidirem que classe instanciar. 
Professor Marcelo Pacote - @profmarcelopacote 101 
W W W. D OMI NAND OTI .COM.B R 
Exercício [1] (MEC/2009/FGV/Arquiteto) (2/2) 
c) Adapter é um padrão utilizado quando se deseja converter a 
interface de uma classe em outra interface, esperada pelos 
clientes. 
d) Singleton é um padrão utilizado quando se deseja comporobjetos em estrutura de árvore para representarem hierarquias 
partes-todo. 
e) Proxy é um padrão também conhecido como surrogate 
utilizado quando se deseja fornecer um substituto ou marcador 
da localização de outro objeto para controlar o acesso ao 
mesmo. 
Professor Marcelo Pacote - @profmarcelopacote 102 
W W W. D OMI NAND OTI .COM.B R 
Exercício [2] (MEC/2008/FGV/An. Sistemas) (1/2) 
Os padrões de projeto orientados a objeto podem ter finalidade 
de criação, estrutural ou comportamental. Os padrões de 
criação se preocupam com o processo de criação de objetos. 
Os padrões estruturais lidam com a composição de classes ou 
de objetos. Os padrões comportamentais caracterizam as 
maneiras pelas quais classes ou objetos interagem e distribuem 
responsabilidades. 
Professor Marcelo Pacote - @profmarcelopacote 103 
W W W. D OMI NAND OTI .COM.B R 
Exercício [2] (MEC/2008/FGV/An. Sistemas) (2/2) 
Assinale a alternativa que apresenta apenas padrões 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. 
Professor Marcelo Pacote - @profmarcelopacote 104 
W W W. D OMI NAND OTI .COM.B R 
Exercício [3] (MEC/2008/FGV/An. Sistemas) (1/2) 
Em relação aos padrões de projeto de software assinale a 
alternativa correta. 
a) Singleton é um padrão utilizado quando se deseja separar a 
construção de um objeto complexo de sua representação de 
modo que o mesmo processo de construção possa criar 
diferentes representações. 
b) Builder é um padrão utilizado quando se deseja especificar os 
tipos de objetos a serem criados usando uma instância 
protótipo e criar novos objetos pela cópia desse protótipo. 
Professor Marcelo Pacote - @profmarcelopacote 105 
W W W. D OMI NAND OTI .COM.B R 
Exercício [3] (MEC/2008/FGV/An. Sistemas) (1/2) 
c) Adapter é um padrão utilizado quando se deseja desacoplar 
uma abstração de sua implementação, de modo que as duas 
possam variar independentemente. 
d) Factory Method é um padrão utilizado quando se deseja 
definir uma interface para criar um objeto e deixar as 
subclasses decidirem que classe instanciar. 
e) Proxy é um padrão utilizado quando se quer garantir que uma 
classe tenha somente uma instância e fornecer um ponto global 
de acesso a mesma. 
Professor Marcelo Pacote - @profmarcelopacote 106 
W W W. D OMI NAND OTI .COM.B R 
Exercício [4] (MEC/2008/FGV/Arquiteto) (1/2) 
Padrões de projeto orientados a objeto podem ter finalidade de 
criação, estrutural ou comportamental. Os padrões de criação 
se preocupam com o processo de criação de objetos. Os 
padrões estruturais lidam com a composição de classes ou de 
objetos. Os padrões comportamentais caracterizam as maneiras 
pelas quais classes ou objetos interagem e distribuem 
responsabilidades. 
Professor Marcelo Pacote - @profmarcelopacote 107 
W W W. D OMI NAND OTI .COM.B R 
Exercício [4] (MEC/2008/FGV/Arquiteto) (2/2) 
Assinale a alternativa em que todos os padrões listados são 
padrões de projeto criação: 
a) Proxy, Builder, Adapter, Mediator, Interpreter. 
b) Mediator, Interpreter, Iterator, Command, State. 
c) Adapter, Bridge, Composite, Decorator, Proxy. 
d) Bridge, Composite, Mediator, Interpreter, Builder. 
e) Singleton, Prototype, Abstract Factory, Builder, Factory 
Method. 
Professor Marcelo Pacote - @profmarcelopacote 108 
W W W. D OMI NAND OTI .COM.B R 
Exercício [5] (MEC/2008/FGV/Arquiteto) (1/2) 
A respeito do padrão de projeto de software Decorator, também 
conhecido como Wrapper, assinale a alternativa correta: 
a) É um padrão utilizado quando se deseja agregar, 
dinamicamente, responsabilidades adicionais a um objeto. 
b) É um padrão utilizado quando se deseja fornecer uma 
interface unificada para um conjunto de interfaces em um 
subsistema. 
Professor Marcelo Pacote - @profmarcelopacote 109 
W W W. D OMI NAND OTI .COM.B R 
Exercício [5] (MEC/2008/FGV/Arquiteto) (2/2) 
c) É um padrão utilizado quando se deseja converter a interface 
de uma classe em outra interface, esperada pelos clientes. 
d) É um padrão utilizado quando se deseja compor objetos em 
estrutura de árvore para representarem hierarquias partes-todo. 
e) É um padrão utilizado quando se deseja desacoplar uma 
abstração de sua implementação, de modo que as duas possam 
variar independentemente. 
Professor Marcelo Pacote - @profmarcelopacote 110 
W W W. D OMI NAND OTI .COM.B R 
Exercício [6] (MEC/2008/FGV/Desenv.) 
Assinale a alternativa que indique apenas padrões estruturais: 
a) Adapter, Bridge, Composite, Decorator e Proxy. 
b) Proxy, Builder, Adapter, Mediator e Interpreter. 
c) Mediator, Interpreter, Iterator, Command e State. 
d) Bridge, Composite, Mediator, Interpreter e Builder. 
e) Singleton, Prototype, Abstract Factory, Builder e Factory 
Method. 
Professor Marcelo Pacote - @profmarcelopacote 111 
W W W. D OMI NAND OTI .COM.B R 
Exercício [7] (MEC/2008/FGV/Desenv.) (1/2) 
A respeito do padrão de projeto de software Bridge, também 
conhecido como Handle ou Body, assinale a alternativa correta. 
a) É um padrão utilizado quando se quer garantir que uma 
classe tenha somente uma instância e fornecer um ponto 
global de acesso à mesma. 
b) É um padrão utilizado quando se deseja definir uma interface 
para criar um objeto e deixar as subclasses decidirem que 
classe instanciar. 
Professor Marcelo Pacote - @profmarcelopacote 112 
W W W. D OMI NAND OTI .COM.B R 
Exercício [7] (MEC/2008/FGV/Desenv.) (2/2) 
c) É um padrão utilizado quando se deseja desacoplar uma 
abstração de sua implementação de modo que as duas possam 
variar independentemente. 
d) É um padrão utilizado quando se deseja especificar os tipos de 
objetos a serem criados usando uma instância protótipo e criar 
novos objetos pela cópia desse protótipo. 
e) É um padrão utilizado quando se deseja separar a construção 
de um objeto complexo de sua representação de modo que o 
mesmo processo de construção possa criar diferentes 
representações. 
Professor Marcelo Pacote - @profmarcelopacote 113 
W W W. D OMI NAND OTI .COM.B R 
Exercício [8] (MEC/2008/FGV/Desenv.) 
A arquitetura em camadas do modelo MVC (Model-View-
Controller) é amplamente utilizada no desenvolvimento de 
aplicações web Java/J2EE. As opções mais frequentemente 
utilizadas na camada de visão (view) do modelo MVC, são: 
a) JPA, JMS, Web Services e Facelets. 
b) JSP, JSTL, Facelets e Applets. 
c) JPA, JTA, JMS e Servlets. 
d) JSF, JMS, JSTL, JDBC. 
e) JSP, EJBs, JTA, JPA. 
Professor Marcelo Pacote - @profmarcelopacote 114 
W W W. D OMI NAND OTI .COM.B R 
Exercício [9] (MEC/2008/FGV/Arquiteto) (1/2) 
A figura a seguir demonstra a arquitetura em camadas do modelo 
MVC (Modelo, Visualização e Controle) que fornece uma maneira de 
dividir a funcionalidade envolvida na manutenção e apresentação dos 
dados de uma aplicação. Usando o padrão MVC fica fácil mapear 
esses conceitos no domínio de aplicações web multicamadas. 
 
Professor Marcelo Pacote - @profmarcelopacote 115 
W W W. D OMI NAND OTI .COM.B R 
Exercício [9] (MEC/2008/FGV/Arquiteto) (2/2) 
O Modelo MVC apresenta várias vantagens, à exceção de uma. 
Assinale-a. 
a) Torna a aplicação escalável. 
b) Gerencia múltiplos visualizadores usando o mesmo modelo. 
c) Requer uma quantidade maior de tempo para analisar e modelar 
os sistemas. 
d) É possível ter desenvolvimento em paralelo para o modelo, 
visualizador e controle. 
e) É muito simples incluir novos clientes, apenas incluindo seus 
visualizadores e controles. 
Professor Marcelo Pacote - @profmarcelopacote 116 
W W W. D OMI NAND OTI.COM.B R 
Gabarito 
Professor Marcelo Pacote - @profmarcelopacote 117 
[1] d 
[2] c 
[3] d 
[4] e 
[5] a 
[6] a 
[7] c 
[8] b 
[9] c 
W W W. D OMI NAND OTI .COM.B R WWW.DOMINANDOTI .COM.BR 
ANEXO II 
Exercícios complementares – Cespe 
Professor Marcelo Pacote – @profmarcelopacote 
W W W. D OMI NAND OTI .COM.B R 
Exercício [1] (TCU/2009/CESPE/ANALISTA) 
( ) Caso seja verificado no desenvolvimento de um sistema 
forte acoplamento entre as classes, recomenda-se o uso do 
padrão de comportamento Factory Method, que evita o 
acoplamento do remetente de uma solicitação ao seu receptor, 
dando a mais de um objeto a oportunidade de tratar uma 
solicitação, mesmo nos casos em que o conjunto de objetos não 
seja conhecido a priori ou seja definido dinamicamente. 
119 
Professor Marcelo Pacote - @profmarcelopacote 119 
W W W. D OMI NAND OTI .COM.B R 
Exercício [2] (TCU/2009/CESPE/ANALISTA) 
( ) No desenvolvimento de um sistema estruturado em 
subsistemas para facilitar o acesso e minimizar a comunicação 
e dependências entre os subsistemas, o padrão de criação 
Factory Method, que fornece uma interface para a criação de 
famílias de objetos relacionados ou dependentes sem 
especificar suas classes concretas, é mais indicado que o 
padrão de criação Prototype. 
120 
Professor Marcelo Pacote - @profmarcelopacote 120 
W W W. D OMI NAND OTI .COM.B R 
Exercício [3] (TCU/2009/CESPE/ANALISTA) 
( ) Se, no desenvolvimento de uma aplicação que leia 
documentos do tipo txt e seja capaz de converter o documento 
em vários formatos distintos, houver a necessidade de facilitar 
acréscimos de novos tipos de conversão, será mais indicado o 
uso do padrão de estrutura Adapter que o uso do padrão de 
estrutura Bridge, pois o padrão Adapter separa a construção de 
um objeto complexo de sua representação para criar 
representações diferentes com o mesmo processo. 
 
121 
Professor Marcelo Pacote - @profmarcelopacote 121 
W W W. D OMI NAND OTI .COM.B R 
Exercício [04] (STJ/2008/CESPE/Analista) 
( ) Os padrões de projeto podem ser usados no projeto 
orientado a objetos para apoiar o reuso de software. Esses 
padrões freqüentemente empregam a herança e o polimorfismo 
para prover generalidade. Abstract factory, strategy e template 
method são padrões de projeto que podem ser empregados nos 
frameworks orientados a objetos para facilitar a adaptação dos 
frameworks. 
Professor Marcelo Pacote - @profmarcelopacote 122 
W W W. D OMI NAND OTI .COM.B R 
Gabarito 
[01] errado 
[02] errado 
[03] errado 
[04] certo 
 
 
Professor Marcelo Pacote - @profmarcelopacote 123 
W W W. D OMI NAND OTI .COM.B R WWW.DOMINANDOTI .COM.BR 
ANEXO III 
Exercícios complementares – Cesgranrio 
Professor Marcelo Pacote – @profmarcelopacote 
W W W. D OMI NAND OTI .COM.B R 
Um Padrão de Projeto de Software ou Padrão de Desenho de 
Software, também muito conhecido pelo termo original em 
inglês Design Pattern, descreve uma solução geral reutilizável 
para um problema recorrente no desenvolvimento de sistemas 
de software. A descrição de um padrão de projeto deve conter 
a) o código final, em uma linguagem de programação, da 
solução apresentada. 
b) a descrição de uma aplicação completa e concreta que 
contenha o padrão sendo definido. 
 
[1] (LIQUIGAS/2012/CESGRANRIO/Desv.) (1/2) 
Professor Marcelo Pacote - @profmarcelopacote 125 
W W W. D OMI NAND OTI .COM.B R 
c) a indicação de uma linguagem de programação orientada a 
objetos que contenha os conceitos que ofereçam suporte direto 
à implementação dos padrões descritos e sua utilização na 
solução apresentada. 
d) a descrição do problema utilizando uma linguagem formal. 
e) um nome, a descrição do problema, a solução utilizando 
alguma notação ou linguagem própria de projeto, em quais 
situações a solução é aplicável, e as consequências do uso da 
solução apresentada. 
 
[1] (LIQUIGAS/2012/CESGRANRIO/Desv.) (2/2) 
Professor Marcelo Pacote - @profmarcelopacote 126 
W W W. D OMI NAND OTI .COM.B R 
Relacione os padrões de projeto às suas indicações de uso. 
I - Ponte 
II - Observador 
III – Decorador 
As associações corretas são: 
a) I - P , II - Q , III - R 
b) I - Q , II - P , III - S 
c) I - Q , II - R , III - P 
d) I - R , II - P , III - S 
e) I - S , II - R , III - Q 
 
[2] (TRANSPETRO/2011/CESGRANRIO/An. Desv ) 
P - Mostra como adicionar 
responsabilidades aos objetos 
dinamicamente. 
Q - Separa a abstração de um objeto de sua 
implementação. 
R - Define e mantém dependência entre 
objetos. 
S - Define um objeto que encapsula como 
um conjunto de objetos que interagem. 
Professor Marcelo Pacote - @profmarcelopacote 127 
W W W. D OMI NAND OTI .COM.B R 
Um programador deve criar um novo projeto que envolva vários tipos de produtos com as 
mesmas funções, mas com peculiaridades diferentes. Por exemplo, o produto do tipo gold 
realiza as mesmas funções que o produto standard, mas, a cada uma delas, armazena a última 
configuração para fornecer uma memória para o usuário. O padrão apropriado para representar 
as classes deste projeto é o 
a) Facade, pois ele pode juntar vários comportamentos em um só, criando uma visão 
simplificada do sistema. 
b) Strategy, pois ele permite criar uma única interface com várias implementações que diferem 
apenas em seu comportamento. 
c) Proxy, pois este permite criar uma representação menos custosa de cada um dos objetos do 
sistema. 
d) Iterator, pois este permite visitar todos os objetos do sistema sem se preocupar com a classe 
real de cada um deles. 
e) Singleton, pois este garante a existência de uma única instância de produto e evita a 
confusão entre as classes. 
[3] (PETRO/2010/CESGRANRIO/Eng. Software) 
Professor Marcelo Pacote - @profmarcelopacote 128 
W W W. D OMI NAND OTI .COM.B R 
Um arquiteto de software estuda que padrões de projeto são apropriados para o novo 
sistema de vendas de uma empresa. Ele deve considerar que o padrão 
a) Bridge separa a construção de um objeto complexo de sua representação, de modo que o 
mesmo processo de construção possa criar diferentes representações. 
b) Builder garante que uma classe seja instanciada somente uma vez, fornecendo também 
um ponto de acesso global. 
c) Singleton separa uma abstração de sua implementação, de modo que os dois conceitos 
possam variar de modo independente. 
d) Chain of Responsibility evita o acoplamento entre o remetente de uma solicitação e seu 
destinatário, dando oportunidade para mais de um objeto tratar a solicitação. 
e) Template Method utiliza compartilhamento para suportar, eficientemente, grandes 
quantidades de objetos de granularidade fina. 
[4] (BACEN/2010/CESGRANRIO/Desv.) 
Professor Marcelo Pacote - @profmarcelopacote 129 
W W W. D OMI NAND OTI .COM.B R 
Um padrão de projeto do catálogo GoF (Gang of Four) é o Template Method, 
cuja finalidade é 
a) definir uma família de algoritmos, encapsular cada um e fazê-los 
intercambiáveis. 
b) desacoplar uma abstração de sua implementação, de tal forma que as 
duas possam variar independentemente. 
c) encapsular uma requisição para parametrizar clientes com diferentes 
requisições e filas e dar suporte a ações reversíveis. 
d) oferecer uma interface única de nível mais elevado para um conjunto de 
interfaces de um subsistema. 
e) permitir a definição da parte invariante de um algoritmo separadamente 
de sua parte variante. 
[5] (LIQUIGAS/2012/CESGRANRIO/Infra.) 
Professor Marcelo Pacote - @profmarcelopacote 130 
W W W. D OMI NAND OTI .COM.B R 
Em uma aplicação para gerenciamento de currículos profissionais, deve 
haver uma funcionalidade para pesquisa (busca) por informaçõespreviamente registradas. 
Essa funcionalidade deve ser apresentada aos usuários como um 
formulário da interface gráfica da aplicação cuja composição deve ser 
diferente em cada uma das seguintes situações. Na primeira, o 
formulário deve apresentar ao usuário campos que permitam realizar 
buscas por empresas que oferecem vagas de emprego. 
Na segunda situação, o formulário deve apresentar campos para 
permitir aos usuários a realização de buscas por currículos de 
candidatos a vagas de emprego. 
[6] (TRANSPETRO/2011/CESGRANRIO/An. Desv.) (1/2) 
Professor Marcelo Pacote - @profmarcelopacote 131 
W W W. D OMI NAND OTI .COM.B R 
O engenheiro de software, encarregado da implementação dessa 
funcionalidade, decidiu usar um padrão de projeto do catálogo GoF (Gang 
of Four). Esse padrão foi escolhido porque permite construir produtos com 
diferentes representações de tal forma que o mesmo processo de 
construção possa ser usado para criar diferentes produtos. No caso da 
funcionalidade descrita acima, os diferentes produtos a serem criados são 
as duas variantes do formulário de busca. Dentre os listados abaixo, qual 
foi o padrão escolhido pelo engenheiro de software? 
 
[6] (TRANSPETRO/2011/CESGRANRIO/An. Desv.) (2/2) 
a) Abstract Factory 
b) Bridge 
c) Builder 
d) Mediator 
e) Prototype 
Professor Marcelo Pacote - @profmarcelopacote 132 
W W W. D OMI NAND OTI .COM.B R 
Uma aplicação orientada a objetos deve ser construída para ler 
arquivos em formato RTF (Rich Text Format) e permitir aos seus 
usuários a exportação do conteúdo desse arquivo para diferentes 
formatos de saída (PDF, DOC, ASCII, HTML, etc). Uma restrição é 
que a aplicação deve ser construída de tal forma que os passos do 
processo de construção de cada arquivo de saída sejam separados 
das diferentes representações dos formatos de saída, ou seja, das 
diferentes lógicas de exportação para cada um dos formatos de 
saída. Dessa forma, diferentes implementações desses passos 
poderiam gerar diferentes representações (formatos de saída). 
[7] (BR-Dist/2012/CESGRANRIO/Java-Web) (1/2) 
Professor Marcelo Pacote - @profmarcelopacote 133 
W W W. D OMI NAND OTI .COM.B R 
Dentre os padrões de projeto do catálogo GoF (Gang of Four) 
listados abaixo, qual deve ser usado na implementação dessa 
aplicação, de tal forma a contemplar a restrição descrita? 
a) Abstract Factory 
b) Builder 
c) Command 
d) Composite 
e) Singleton 
[7] (BR-Dist/2012/CESGRANRIO/Java-Web) (2/2) 
Professor Marcelo Pacote - @profmarcelopacote 134 
W W W. D OMI NAND OTI .COM.B R 
Uma API para desenvolvimento de aplicações distribuídas deve 
dar aos programadores que a utilizam a possibilidade de invocar 
métodos definidos em objetos localizados em uma máquina 
remota, como se esses métodos estivessem definidos em um 
objeto local. Com a intenção de resolver esse problema, essa API 
pode usar, em sua implementação, uma variante do padrão 
estrutural GoF (Gang of Four) chamado 
[8] (BR-Dist/2012/CESGRANRIO/Java-Web) 
a) Decorator 
b) Bridge 
c) Fly Weight 
d) Proxy 
e) Interpreter 
 
Professor Marcelo Pacote - @profmarcelopacote 135 
W W W. D OMI NAND OTI .COM.B R 
[9] (PETRO/2010/CESGRANRIO/Eng. Software) 
Um dos participantes da equipe de desenvolvimento de um framework 
deve implementar uma operação em uma das classes desse framework. 
Seja X o nome dessa classe. Essa operação implementa um algoritmo em 
particular. Entretanto, há passos desse algoritmo que devem ser 
implementados pelos usuários do framework através da definição de uma 
subclasse de X. Sendo assim, qual o padrão de projeto do catálogo GoF 
(Gang of Four) a ser usado pelo desenvolvedor do framework na 
implementação da referida operação, dentre os listados a seguir? 
Professor Marcelo Pacote - @profmarcelopacote 136 
a) Singleton. 
b) Decorator. 
c)Interpreter. 
d) Template Method. 
e) Observer. 
W W W. D OMI NAND OTI .COM.B R 
O Controlador Frontal (Front Controller) é um dos padrões do catálogo J2EE. 
Esse padrão propicia ao desenvolvedor que o utiliza na construção de uma 
aplicação Web, em camadas, 
a) organizar a camada de integração. 
b) implementar o tratamento de todas as requisições que chegam ao lado 
servidor da aplicação, provenientes do cliente. 
c) implementar o componente View da tríade MVC (Model-View-Controller). 
d) implementar o controle de acesso dentro de cada caso de uso da 
aplicação Web. 
e) expor à camada de negócio as estruturas de dados da camada de 
apresentação. 
[10] (PETRO/2010/CESGRANRIO/Eng. Software) 
Professor Marcelo Pacote - @profmarcelopacote 137 
W W W. D OMI NAND OTI .COM.B R 
Em uma aplicação Java EE, na substituição de uma solução que usa o Transparent Façade 
por outra que usa o Session Façade, os clientes devem ser refatorados para interagir com 
objetos Data Transfer Object eventualmente criados durante essa substituição. 
 PORQUE 
Em uma aplicação Java EE, o uso do Transparent Façade em vez do Session Façade 
aumenta a granularidade das funções definidas na fachada resultante. Analisando-se as 
afirmações acima, conclui-se que 
a) as duas afirmações são verdadeiras, e a segunda justifica a primeira. 
b) as duas afirmações são verdadeiras, e a segunda não justifica a primeira. 
c) a primeira afirmação é verdadeira, e a segunda é falsa. 
d) a primeira afirmação é falsa, e a segunda é verdadeira. 
e) as duas afirmações são falsas. 
[11] (CHESF/2012/CESGRANRIO/Analista) 
Professor Marcelo Pacote - @profmarcelopacote 138 
W W W. D OMI NAND OTI .COM.B R 
Exercício [12] (PETR/2006/CESGRANRIO) (1/3) 
Christopher Alexander afirma: "cada padrão descreve um problema 
no nosso ambiente e o cerne da sua solução, de tal forma que você 
possa usar essa solução mais de um milhão de vezes, sem nunca 
fazê-lo da mesma maneira". Muito embora Alexander estivesse 
falando acerca de padrões em construções e cidades, o que ele diz é 
verdadeiro em relação aos padrões de projeto orientados a objeto. 
Neste caso, as soluções são expressas em termos de objetos e 
interfaces em vez de paredes e portas, mas no cerne de ambos os 
tipos de padrões está a solução para um problema num determinado 
contexto. Quanto à indicação para o uso dos padrões de projeto é 
FALSO afirmar que o padrão: 
139 
Professor Marcelo Pacote - @profmarcelopacote 139 
W W W. D OMI NAND OTI .COM.B R 
Exercício [12] (PETR/2006/CESGRANRIO) (2/3) 
a) Abstract Factory é indicado quando: um sistema deve ser independente de 
como seus produtos são criados, compostos ou representados; um sistema 
deve ser configurado como um produto de uma família de múltiplos 
produtos; uma família de objetos-produto for projetada para ser usada em 
conjunto, e você necessita garantir esta restrição; você quer fornecer uma 
biblioteca de classes de produtos e quer revelar somente suas interfaces, 
não suas implementações. 
b) Builder é indicado quando: uma classe não 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 
várias subclasses auxiliares, e você quer localizar o conhecimento de qual 
subclasse auxiliar que é a delegada. 
140 
Professor Marcelo Pacote - @profmarcelopacote 140 
W W W. D OMI NAND OTI .COM.B R 
Exercício [12] (PETR/2006/CESGRANRIO) (3/3) 
c) Mediator é indicado quando: um conjunto de objetos se comunica de maneiras 
bem definidas, porém complexas; a reutilização de um objeto é difícil porque ele 
referencia e se comunica com muitos outros objetos; um comportamento que está 
distribuído entre várias classes deveria ser customizável, ou adaptável, sem 
excessiva especialização em subclasses. 
d) Memento é indicado quanto: uminstantâneo de estado de um objeto deve ser 
salvo de maneira que possa ser restaurado para esse estado mais tarde; uma 
interface direta para obtenção do estado exporia detalhes de implementação 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 diferença entre 
composições de objetos e objetos individuais, neste caso, os clientes tratarão todos 
os objetos na estrutura composta de maneira uniforme 
141 
Professor Marcelo Pacote - @profmarcelopacote 141 
W W W. D OMI NAND OTI .COM.B R 
Exercício [13] (PETR/2010/CESGRANRIO) (1/2) 
Em um sistema de software para controlar pedidos para entrega em 
domicílio, deve haver uma funcionalidade que permita que o atendente 
solicite a repetição de um pedido anteriormente feito por um cliente. O 
gerente do restaurante informou que essa funcionalidade aumentaria a 
agilidade no atendimento aos clientes, visto que muitos deles tendem a 
fazer pedidos similares aos que já fizeram anteriormente. Ao usar essa 
funcionalidade, o atendente do restaurante seleciona um pedido cuja 
composição corresponde a produtos normalmente requisitados pelos 
clientes e solicita ao sistema a construção de um novo pedido igual ao 
selecionado. Esse novo pedido pode, então, ser alterado pelo atendente se 
o cliente solicitar a adição de novos produtos do cardápio, por exemplo. 
142 
Professor Marcelo Pacote - @profmarcelopacote 142 
W W W. D OMI NAND OTI .COM.B R 
Exercício [13] (PETR/2010/CESGRANRIO) (2/2) 
Portanto, a parte principal dessa funcionalidade corresponde a 
criar uma cópia de um pedido a partir de pedido preexistente. 
Na implementação dessa funcionalidade, seu desenvolvedor 
deve utilizar qual padrão de projeto do catálogo GoF (Gang of 
Four), dentre os listados abaixo? 
 
143 
Professor Marcelo Pacote - @profmarcelopacote 143 
a) Builder. 
b) Factory Method 
c) Command 
d) Abstract Factory 
e) Prototype. 
 
W W W. D OMI NAND OTI .COM.B R 
Exercício [14] (PETR/2011/CESGRANRIO) 
O Padrão de Projeto Decorador é formado por uma hierarquia de 
classes cuja classe mais genérica representa um componente ou um 
componente abstrato. Para o padrão ser útil, essa classe deve ser 
diretamente especializada em, pelo menos, outras duas classes que 
representam um(a) 
a) componente cliente e um componente adaptador 
b) componente cliente e um decorador 
c) componente concreto e um decorador 
d) componente concreto e um componente adaptador 
e) instância única e um decorador 
144 
Professor Marcelo Pacote - @profmarcelopacote 144 
W W W. D OMI NAND OTI .COM.B R 
[1] e 
[2] c 
[3] b 
[4] d 
[5] e 
[6] c 
[7] b 
[8] d 
Gabarito 
Professor Marcelo Pacote - @profmarcelopacote 145 
[09] d 
[10] b 
[11] c 
[12] b 
[13] e 
[14] c 
W W W. D OMI NAND OTI .COM.B R WWW.DOMINANDOTI .COM.BR 
ANEXO IV 
Exercícios complementares – Outras bancas 
Professor Marcelo Pacote – @profmarcelopacote 
W W W. D OMI NAND OTI .COM.B R 
Exercício [1] (TSE/2012/CONSULPLAN) (1/2) 
O desenvolvimento de software é uma atividade que apresenta 
dificuldades, ligada ao entendimento do problema. Design Patterns 
surgiram na busca de soluções para as dificuldades, tornando-se um 
mecanismo eficiente no compartilhamento de conhecimento entre os 
desenvolvedores. Gamma propõe um modo de categorização dos DESIGN 
PATTERNS, definindo famílias de padrões relacionados, descritos a seguir. 
I. Abrange a configuração e inicialização de objetos e classes. 
II. Lida com as interfaces e a implementação das classes e dos objetos. 
III. Lida com as interações dinâmicas entre grupos de classes e objetos. 
Professor Marcelo Pacote - @profmarcelopacote 147 
W W W. D OMI NAND OTI .COM.B R 
Exercício [1] (TSE/2012/CONSULPLAN) (2/2) 
Essas famílias são denominadas, respectivamente, 
a) Structural Patterns, Standard Patterns e Creational Patterns. 
b) Behavioral Patterns, Structural Patterns e Standard Patterns. 
c) Creational Patterns, Structural Patterns e Behavioral Patterns. 
d) Standard Patterns, Creational Patterns e Structural Patterns. 
Professor Marcelo Pacote - @profmarcelopacote 148 
W W W. D OMI NAND OTI .COM.B R 
Exercício [2] (ESAEX/2011/EsFCEx) 
Segundo a classificação do Gang of Four (GoF), os padrões de 
projeto que possuem respectivamente os propósitos 
COMPORTAMENTAL, CRIAÇÃO e ESTRUTURAL, são: 
 
a) ADAPTER, BUILDER e MEMENTO 
b) PROXY, ADAPTER e DECORATOR 
c) COMMAND, BUILDER e SINGLETON 
d) PROTOTYPE, MEDIATOR e ITERATOR 
e) OBSERVER, ABSTRACT FACTORY e BRIDGE 
Professor Marcelo Pacote - @profmarcelopacote 149 
W W W. D OMI NAND OTI .COM.B R 
[1] c 
[2] e 
Gabarito 
Professor Marcelo Pacote - @profmarcelopacote 150

Continue navegando