Escolar Documentos
Profissional Documentos
Cultura Documentos
html#
Descrição
Propósito
1 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Preparação
Objetivos
Módulo 1
Módulo 2
Módulo 3
Módulo 4
Introdução
Os padrões GoF, do inglês Gang of Four, são padrões de projeto
3 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
4 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Responsibility
Imagine que você esteja implementando um módulo tarifador de
ligações telefônicas, responsável por calcular o custo de cada ligação
telefônica efetuada em uma central telefônica do tipo PABX de uma
empresa.
Suponha que exista uma regra de precificação específica para cada tipo
de ligação: ligação interna entre ramais, ligação local, ligação DDD e
ligação DDI. Uma solução possível para esse problema seria concentrar
toda a lógica de tarifação em uma única classe, conforme podemos ver
no código a seguir.
Javascript
6 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
e destino.
Diagrama de classes.
8 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Diagrama de sequência
Fazer um tratamento local da exceção e
encerrar o �uxo de exceção.
Fazer um tratamento local da exceção e
repassá-la para o método chamador ou bloco
try-catch mais externo.
9 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Somente repassar a exceção para o método
chamador ou bloco try-catch mais externo,
sem fazer nenhum tratamento local.
Java
10 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Java
11 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Java
12 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Atenção
Padrão Command
13 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Evento Ação
Botão 4 do
Pular
mouse
14 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Java
15 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Diagrama de classes
Java
16 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Java
17 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Java
undo
Responsável por desfazer as ações realizadas pelo comando.
redo
Responsável por realizar novamente as ações desfeitas pela operação
undo.
Re�exão
19 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Padrão Iterator
Java
20 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Atenção
Diagrama de classes
21 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
hasNext
Verifica se existe um próximo elemento ou se o cursor já está
posicionado no último elemento da coleção.
next
Retorna o próximo elemento da coleção. Na primeira chamada, ele
retorna o primeiro elemento da coleção.
remove
Remove um elemento da coleção.
22 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Diagrama de classes
Java
Atenção
Note que esse método funciona com qualquer coleção, isto é, ArrayList,
23 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Atenção
Padrão de projeto Command
No vídeo, apresentamos um exemplo de aplicação do padrão Command
no desenvolvimento de software e seus impactos na automação de
testes unitários.
24 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
25 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Questão 1
26 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Questão 2
27 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
B
com o sistema.
28 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Padrão Mediator
29 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Diagrama de sequência
30 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Diagrama de classes
31 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Java
32 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Java
33 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Atenção
Padrão Memento
34 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Veja a classe Pedido cujo código é listado a seguir. Ela define o número
do pedido, o número do item a ser utilizado na criação de um novo item
e a lista de itens do pedido. Apenas a classe Pedido tem acesso ao array
de itens. Portanto, a adição de novos itens ao pedido deve ser realizada
por meio da operação adicionarItem.
Java
35 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Diagrama de classes
Java
36 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Java
37 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Operação criarMemento
Salva o estado do pedido em uma instância de PedidoMemento.
Operação restaurarMemento
Restaura o estado do pedido a partir do objeto PedidoMemento
recebido como parâmetro.
Java
38 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Java C++
Dificulta a definição da Permite uma definição
interface do memento, mais rigorosa por meio
de forma que somente da utilização da palavra
o originador tenha reservada friend.
acesso.
39 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Atenção
Padrão Strategy
40 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Boostrap
Interpolação polinominal splines cúbicos
Java
41 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Problema 1 Problema 2
Saiba mais
Diagrama de classes
Java
43 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Java
Java
44 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Java
45 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
46 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Atenção
O padrão Strategy, por gerar objetos sem estado, pois os dados de que o
algoritmo precisa estão definidos na classe contexto, pode ser
implementado em combinação com o padrão Flyweight, de modo que
uma única instância de cada algoritmo seja compartilhada pelos vários
contextos. Em nosso exemplo, se fossem criadas 50 instâncias de
CurvaJuros, bastaria instanciar um único objeto de cada algoritmo, caso
adicionássemos o padrão Flyweight à solução.
Padrão de projeto Strategy
No vídeo, apresentamos exemplos de aplicação do padrão Strategy no
desenvolvimento de software.
47 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Questão 1
48 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
49 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Questão 2
50 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Padrão Observer
51 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
A 40 30 100 170
B 120 80 70 270
C 80 50 90 220
Tabela: Painel 1
Elaborada por: Alexandre Luis Correa
52 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Gráfico: Painel 2
Elaborado por: Alexandre Luis Correa
Gráfico: Painel 3
Elaborado por: Alexandre Luis Correa
53 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
notificados e atualizados.
Diagrama de classes
Subject
54 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Observer
ConcreteSubject
ConcreteObserver
55 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Diagrama de sequência
56 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Java
Java
57 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Java
58 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Atenção
59 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Padrão Visitor
60 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Objetos.
61 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Visitor
Element
62 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Java
63 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Java
Recomendação
64 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Cálculo
Formatação
Veri�cação sintática
Veri�cação semântica da expressão
Atenção
65 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Composite e Interpreter.
Padrão State
66 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Diagrama de estado.
Java
67 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Diagrama de estado
Java
68 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Atenção
69 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Padrão de projeto Observer
No vídeo, abordaremos a implementação do padrão Observer em
diferentes versões do Java.
70 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Questão 1
71 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Questão 2
72 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
73 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Padrão Interpreter
75 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Diagrama de classes
Atenção
76 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Indicado Não indicado
77 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Veri�cação sintática
Veri�cação semântica
Obtenção do texto da expressão
78 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Java
79 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Diagrama de classes
80 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Java
Atenção
81 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Padrão de projeto Template Method
No vídeo, apresentaremos exemplos de aplicação do padrão Template
Method no desenvolvimento de software
82 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
83 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Questão 1
84 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Questão 2
85 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
86 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Considerações �nais
Neste conteúdo, vimos como os padrões de projeto GoF
comportamentais podem nos auxiliar a distribuir as responsabilidades
do sistema em classes mais coesas e menos acopladas. Muitos
projetos implementados em Java são difíceis de manter. Uma causa
frequente para esse problema é a concentração da complexidade do
sistema em poucas classes com milhares de linhas de código, o que
torna a estrutura frágil e de difícil entendimento, prejudicando a
automação de testes e a evolução do sistema.
87 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Podcast
Ouça o podcast. Nele, abordaremos os padrões comportamentais mais
utilizados.
Explore +
Para saber mais sobre a programação orientada a objetos, acesse o site
da DevMedia e leia o artigo Utilização dos princípios SOLID na
aplicação de padrões de projeto.
88 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Referências
GAMMA, E.; HELM, R.; JOHNSON, R.; VLISSIDES, J. Design Patterns:
Elements of Reusable Object-Oriented Software. 1. ed. Boston: Addison-
Wesley, 1994.
Download material
89 of 90 04/04/2024, 09:49
Padrões GoF Comportamentais https://stecine.azureedge.net/repositorio/00212ti/02683/index.html#
Relatar problema
90 of 90 04/04/2024, 09:49