padrões de design toacy cavalcante de oliveira. 2 april 20, 2015 problema
TRANSCRIPT
![Page 1: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/1.jpg)
Padrões de Design
Toacy Cavalcante de Oliveira
![Page 2: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/2.jpg)
2April 27, 2023
Problema
![Page 3: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/3.jpg)
3April 27, 2023
Análise vs Projeto
AnáliseModela o mundo real.Usualmente não é “mapeável”para o Projeto
pois tende a ser ineficiente/ineficaz. Projeto
Atribuição de Responsabilidades.Boas práticas (+Coesão, -Acoplamento)
![Page 4: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/4.jpg)
4April 27, 2023
Como compatibilizar os dois mundos? Tipicamente, bons projetistas são
formados após um longo período de experiência.
São hábeis praticantes do conceitos básicos de ES.Abstração, Flexibilidade e Modularidade
![Page 5: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/5.jpg)
5April 27, 2023
Problema
Como capturar este conhecimento de modo a transmiti-lo a outros desenvolvedores para que estes também se tornem experts?
Design Patterns
![Page 6: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/6.jpg)
6April 27, 2023
Introdução
![Page 7: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/7.jpg)
7April 27, 2023
Definições
“um padrão descreve um problema que se repete várias vezes em um determinado meio, descrevendo o núcleo de sua solução, de modo que esta solução possa ser usada milhares e milhares de vezes."
[Christopher Alexander]
![Page 8: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/8.jpg)
8April 27, 2023
Definições
Os Padrões de Design formam um conjunto de regras que descrevem como realizar certas tarefas no âmbito do desenvolvimento de software [Pree, 1994].
![Page 9: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/9.jpg)
9April 27, 2023
Definições
Um Padrão de Design visa resolver um problema recorrente de design que surge em determinadas situações [Buschmann et al., 1996].
Os Padrões de Design identificam e definem abstrações que estão acima do nível de uma única classe e de suas instâncias, ou de componentes [Gamma et al., 1994].
![Page 10: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/10.jpg)
10April 27, 2023
Motivação para DP Novos problemas são geralmente
similares a problemas já resolvidos anteriormente.
As soluções para problemas similares seguem padrões recorrentes.
![Page 11: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/11.jpg)
11April 27, 2023
Benefícios
Servem de guia para a solução do problema. Ajudam a gerenciar a complexidade do software Estimulam a aplicação e disseminação de boas
práticas da POO. Definem um vocabulário comum entre os
projetistas, o que ajuda na disseminação de soluções bem sucedidas.
![Page 12: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/12.jpg)
12April 27, 2023
Histórico
![Page 13: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/13.jpg)
13April 27, 2023
De onde vêm?
Christofer Alexander A Pattern Language, Oxford University Press 1977 Timeless way of Building, Oxford University Press
1979
C.A. era arquiteto e identificou uma série de padrões utilizados na construção de edificações.
![Page 14: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/14.jpg)
14April 27, 2023
OOPSLA
Em 1987, Ward Cunningham e Kent Beck usaram algumas das idéias de Alexander no trabalho sobre GUI intitulado “Using Pattern Languages for Object-Oriented Programs” [OOPSLA-87].
![Page 15: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/15.jpg)
15April 27, 2023
Gang-of-Four
Em 1994, Erich Gamma, Richard Helm, John Vlissides e Ralph Johnson publicaram um dos livros mais importantes de Engenharia de Software da década de 90: “Design Patterns: Elements of Reusable Object-Oriented Software” [GoF].
![Page 16: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/16.jpg)
16April 27, 2023
Livros
Design Patterns: Elements of Reusable Object-Oriented SoftwareErich Gamma, Richard Helm, Ralph Johnson, John VlissidesAddison-Wesley, October 1994
![Page 17: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/17.jpg)
17April 27, 2023
DescrevendoPadrões
![Page 18: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/18.jpg)
18April 27, 2023
4 Elementos Essenciais
Nome do padrão
Problema
Solução
Conseqüências
![Page 19: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/19.jpg)
19April 27, 2023
Nome
Serve de referência para o padrão.
Aumenta o vocabulário de projeto.
Deve ser único.
![Page 20: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/20.jpg)
20April 27, 2023
Problema
Quando aplicar um padrão.Contexto.Lista de condições que
justifiquem aplicar o padrão.
![Page 21: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/21.jpg)
21April 27, 2023
Solução
Elementos que compõem o padrão.
“Arranjo” geral dos seus elementos.
Responsabilidades e colaborações destes elementos.
![Page 22: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/22.jpg)
22April 27, 2023
Conseqüência
AnálisesVantagens / desvantagensFlexibilidade, capacidade de
extensão ou portabilidade.
![Page 23: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/23.jpg)
23April 27, 2023
Exemplo
![Page 24: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/24.jpg)
24April 27, 2023
Identificação Nome: Observer Problema: Notificar a ocorrência de um evento a
uma lista de objetos. Solução: Observers delegam a responsabilidade
de monitoramento para um objeto central o Subject.
Consequencias: Permite variar Subject e Observer de forma independente. Permite comunicação broadcast.
![Page 25: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/25.jpg)
25April 27, 2023
Observer - Elementos
![Page 26: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/26.jpg)
26April 27, 2023
Catálogo
![Page 27: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/27.jpg)
27April 27, 2023
GoF & POSA
GoF (“the gang of four”) catalogue“Design Patterns: Elements of Reusable
Object Oriented Software,” Gamma, Helm, Johnson,Vlissides, Addison-Wesley, 1995
POSA cataloguePattern-Oriented Software
Architecture,Buschmann, et al.; Wiley, 1996
![Page 28: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/28.jpg)
28April 27, 2023
Estrutura do Catálogo
Classifica padrões de acordo com seu propósito,De CriaçãoEstruturalComportamental
e escopo.Objeto Classe
![Page 29: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/29.jpg)
29April 27, 2023
Quanto ao escopo
ClassesPadrões tratam do relacionamento entre
classes e subclasses;
ObjetosPadrões tratam relacionamentos entre
objetos e por isso podem ser alterados em tempo de execução.
![Page 30: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/30.jpg)
30April 27, 2023
De Criação
Diz respeito ao processo ou ciclo de criação de um objeto. Escopo classe: delega a criação de um objeto
para alguma de suas subclasses.
Escopo objeto: delega a criação de um objeto para outro objeto
![Page 31: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/31.jpg)
31April 27, 2023
Estrutural
Diz respeito a composição de objetos e classes;Escopo classe: Utilizam herança para compor
objetos
Escopo Objeto: Descreve formas de compor objetos.
![Page 32: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/32.jpg)
32April 27, 2023
Comportamental
Caracteriza o modo como classes e objetos interagem e compartilham responsabilidades.Escopo Classe: Utiliza herança para
descrever algoritmos e controle de fluxo.Escopo Objeto: Descreve como um grupo de
objetos cooperam de modo a executar uma tarefa.
![Page 33: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/33.jpg)
33April 27, 2023
Visão GeralPropósito
Criação Estrutural ComportamentalEscopo Class Factory Method Adapter (classe) Interpreter
Template MethodObject Abstract Factory Adapter (object) Chain of Responsibility
Builder Bridge CommandPrototype Composite Iterator Singleton Decorator Mediator
Façade MementoFlyweight ObserverProxy State
StrategyVisitor
![Page 34: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/34.jpg)
34April 27, 2023
Estrutura Interna
Além das 4 características essenciais, o Catálogo do GoF define outras características para descrever padrões.
![Page 35: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/35.jpg)
35April 27, 2023
Estrutura Interna 1/3 Nome do Padrão e Classificação
Passa a fazer parte do vocabulário dos projetistas.
Propósito O quê o Padrão faz? Que tipo de problema ou característica particular de projeto ele trata?
Também Conhecido Como: Conjunto de outros nomes (apelidos) conhecidos para o Padrão, se existir
algum.
Motivação Um cenário que ilustra o problema de projeto e como as estruturas de classes e
objetos no Padrão o resolvem.
![Page 36: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/36.jpg)
36April 27, 2023
Estrutura Interna 2/3 Aplicação
Quais são as situações onde este padrão pode ser aplicado? Quais são os exemplos de projetos que ele pode tratar? Como você pode reconhecer estas situações?
Estrutura Uma representação gráfica das classes no padrão
Participantes As classes e/ou objetos que participam no padrão de projeto, e suas
responsabilidades
Colaborações Como os participantes interagem para cumprir suas responsabilidades
![Page 37: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/37.jpg)
37April 27, 2023
Estrutura Interna 3/3 Conseqüências
Como o padrão alcança seus objetivos? Quais são os resultados do uso do padrão?
Implementação Dicas e técnicas que o projetista deve saber, e possíveis armadilhas para as quais ele deve
estar preparado.
Exemplo de Código Fragmentos de código que ilustram como o padrão deve ser implementado
Usos Conhecidos Exemplos de utilização do padrão em sistemas já implementados.
Padrões Relacionados Lista de alguns padrões fortemente relacionados ao padrão em questão e as suas
principais diferenças.
![Page 38: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/38.jpg)
38April 27, 2023
Observer
![Page 39: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/39.jpg)
39April 27, 2023
O padrão Observer Classificação
Comportamental de Objetos
Propósito Provê sincronização, coordenação e consistência
entre objetos relacionados.
Também Conhecido Como: Dependents, Publish-Subscribe
![Page 40: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/40.jpg)
40April 27, 2023
Motivação Necessidade de manter consistência entre objetos relacionados.
Não existe interesse em tornar as classes fortemente acopladas.
Ex. Planilha e gráfico de barras. Não tem conhecimento um do outro Trabalham em conjunto apresentando uma mesma informação
O padrão observer oferece um mecanismo para resolver esse problema
Subject Possui um conjunto de observers.
Notifica seus observers quando sofre uma mudança de estado
![Page 41: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/41.jpg)
41April 27, 2023
Aplicabilidade
Quando uma mudança em um objeto exige mudanças em outros, e não são conhecidos quantos devem ser mudados.
Quando um objeto deve ser capaz de notificar outros objetos sem que estes sejam fortemente acoplados.
![Page 42: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/42.jpg)
42April 27, 2023
Estrutura
![Page 43: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/43.jpg)
43April 27, 2023
Participantes Subject
conhece seu Observer. Qualquer número de objetos Observer podem observar um Subject provê uma interface para acoplar e desacoplar objetos Observer.
ConcreteSubject guarda o estado de interesse para ConcreteObserver envia uma notificação para seu Observer quando seu estado muda.
Observer define uma interface de atualização para objetos que devem ser notificados sobre mudanças em um
Subject.
ConcreteObserver Mantém uma referência para um objeto ConcreteSubject Guarda o estado que deve ficar consistente com o de Subject Implementa o Observer atualizando a interface para manter seu estado consistente com o de
Subject.
![Page 44: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/44.jpg)
44April 27, 2023
Colaborações
O ConcreteSubject notifica seus observadores sempre que ocorrer uma mudança.
Após ter sido notificado, um ConcreteObserver pode consultar o subject.
![Page 45: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/45.jpg)
45April 27, 2023
Conseqüências
Acoplamento fraco entre o Subject e o Observer
Suporte para comunicações em broadcast
Atualizações inesperadas
![Page 46: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/46.jpg)
46April 27, 2023
Implementação
Observando mais de um subjectSubject ativador é passado como parâmetro
no método update()
Quem dispara a atualização?SubjectCliente
![Page 47: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/47.jpg)
47April 27, 2023
Exemplo de código
![Page 48: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/48.jpg)
48April 27, 2023
Exemplo de código
![Page 49: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/49.jpg)
49April 27, 2023
Exemplo de código
![Page 50: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/50.jpg)
50April 27, 2023
Usos conhecidos
Serviço de Eventos e Serviço de Notificação (CORBA)
![Page 51: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/51.jpg)
51April 27, 2023
Padrões relacionados
Mediator Encapsula a semântica de atualizações complexas, o
ChangeManager atua como um mediador entre subjects e observers
Singleton o ChangeManager pode usar o padrão singleton para
torná-lo único e globalmente acessível.
![Page 52: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/52.jpg)
52April 27, 2023
Catálogo
![Page 53: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/53.jpg)
53April 27, 2023
Catálogo Abstract Factory:
Provê uma interface para criação de famílias de objetos relacionados ou interdependentes. Remove a dependência entre o cliente, que usa os objetos, e a classe dos objetos produzidos.
Adapter: Converte a interface de uma classe em outra, esperada pelo cliente. O Adapter permite que classes
que antes não poderiam trabalhar juntas, por incompatibilidade de interfaces, possam agora fazê-lo.
Bridge: Separa uma abstração de sua implementação, de modo que ambas possam variar
independentemente.
Builder: Provê uma interface genérica para a construção incremental de agregações. Um Builder esconde
os detalhes de como os componentes são criados, representados e compostos.
Chain of Responsibility: Encadeia os objetos receptores e transporta a mensagem através da corrente até que um dos
objetos a responda. Assim, separa (provê loose coupling) objetos transmissores dos receptores, dando a chance de mais de um objeto poder tratar a mensagem.
![Page 54: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/54.jpg)
54April 27, 2023
Catálogo de Padrões de Projeto Command:
Encapsula uma mensagem como um objeto, de modo que se possa parametrizar clientes com diferentes mensagens. Separa, então, o criador da mensagem do executor da mesma.
Composite: Compõe objetos em árvores de agregação (relacionamento parte-todo). O Composite
permite que objetos agregados sejam tratados como um único objeto.
Decorator: Anexa responsabilidades adicionais a um objeto dinâmicamente. Provê uma alternativa
flexível para extensão de funcionalidade, sem ter que usar Herança.
Facade: Provê uma interface unificada para um conjunto de interfaces em um subsistema. O Facade
define uma interface alto nível para facilitar o uso deste subsistema.
Factory Method: Define uma interface para criação de um objeto, permitindo que as suas subclasses
decidam qual classe instanciar. O Factory Method deixa a responsabilidade de instanciação para as subclasses.
![Page 55: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/55.jpg)
55April 27, 2023
Catálogo Flyweight:
Usa o compartilamento para dar suporte eficiente a um grande número de objetos com alto nível de granularidade.
Interpreter: Usado para definição de linguagem. Define representações para gramáticas e
abstrações para análise sintática.
Iterator: Provê um modo de acesso a elementos de um agregado de objetos, sequencialmente,
sem exposição de estruturas internas.
Mediator: Desacopla e gerencia as colaborações entre um grupo de objetos. Define um objeto
que encapsula as interações dentre desse grupo.
Memento: Captura e externaliza o estado interno de um objeto (captura um "snapshot"). O
Memento não viola o encapsulamento.
![Page 56: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/56.jpg)
56April 27, 2023
Catálogo Observer:
Provê sincronização, coordenação e consistência entre objetos relacionados.
Prototype: Especifica os tipos de objetos a serem criados num sistema, usando uma
instância protótipo. Cria novos objetos copiando este protótipo.
Proxy: Provê Design para um controlador de acesso a um objeto.
Singleton: Assegura que uma classe tenha apenas uma instância e provê um ponto
global de acesso a ela.
State: Deixa um objeto mudar seu comportamento quando seu estado interno muda,
mudando, efetivamente, a classe do objeto.
![Page 57: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/57.jpg)
57April 27, 2023
Catálogo Strategy:
Define uma família de algoritmos, encapsula cada um deles, e torna a escolha de qual usar flexível. O Strategy desacopla os algoritmos dos clientes que os usa.
Template Method: Define o esqueleto de um algoritmo em uma operação. O Template Method
permite que subclasses componham o algoritmo e tenham a possibilidade de redefinir certos passos a serem tomados no processo, sem contudo alterar sua inetrface.
Visitor: Representa uma operação a ser realizada sobre elementos da estrutura de um
objeto. O Visitor permite que se crie um nova operação sem que se mude a classe dos elementos sobre as quais ela opera.
![Page 58: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/58.jpg)
58April 27, 2023
Utilização
![Page 59: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/59.jpg)
59April 27, 2023
Como utilizar Padrões?
Existem algumas perguntas que auxiliam o emprego de Design Patterns.
A resposta não é exata mas da uma boa direção!
![Page 60: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/60.jpg)
60April 27, 2023
Variação
Existe variação de uma regra de negócio ou implementação?StrategyBridgeProxyDecoratorVisitor
![Page 61: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/61.jpg)
61April 27, 2023
Ex. Strategy
Existe alguma variação na regra?Define uma família de algoritmos, encapsula
cada um deles, e torna a escolha de qual usar flexível. O Strategy desacopla os algoritmos dos clientes que os usa.
Ex. Feature Alternativas são candidatas para o Strategy.
![Page 62: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/62.jpg)
62April 27, 2023
Interfaces
Existe uma preocupação com interfaces e/ou tratamento de “objetos” incompatíveis?AdapterCompositeFacade
![Page 63: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/63.jpg)
63April 27, 2023
Ex. Facade
Existe a necessidade de simplificar, “OO-ificar” uma classe ou um subsistema?
Provê uma interface unificada para um conjunto de interfaces em um subsistema. O Facade define uma interface alto nível para facilitar o uso deste subsistema.
![Page 64: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/64.jpg)
64April 27, 2023
Desacoplamanto
Existe a necessidade de desacoplar ?
ObserverChain of Responsibility IteratorMediatorState
![Page 65: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/65.jpg)
65April 27, 2023
Ex. State
Existem objetos om muitos estados, implicando e um difícil gerenciamento destes (muito código) ?
Deixa um objeto mudar seu comportamento quando seu estado interno muda, mudando, efetivamente, a classe do objeto.
![Page 66: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/66.jpg)
66April 27, 2023
Criação
Existe a necessidade de criar coisas?Abstract FactoryBuilderFactory Method
![Page 67: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/67.jpg)
67April 27, 2023
Ex. Factory Method
As subclasses necessitam saber/descobrir o que instanciar?Define uma interface para criação de um
objeto, permitindo que as suas subclasses decidam qual classe instanciar. O Factory Method deixa a responsabilidade de instanciação para as subclasses.
![Page 68: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/68.jpg)
68April 27, 2023
Mais sobre Padrões
![Page 69: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/69.jpg)
69April 27, 2023
+Padrões Analysis patterns –
Soluções típicas para problemas de análise recorrente. Analysis Patterns, Fowler; Addison-Wesley, 1996 Applying UML and Patterns, Larman, Prentice-Hall, 1998
Architectural patterns Veja POSA
Idioms Smalltalk Best Practice Patterns, Beck; Prentice Hall, 1997 Concurrent Programming in Java, Lea; Addison-Wesley, 1997 Advanced C++, Coplien, Addison-Wesley, 1992 Effective C++: 50 Specific Ways to Improve Your Programs and Design
(2nd Edition), Scott Meyers, Addison-Wesley, (September 1997) More Effective C++: 35 New Ways to Improve
![Page 70: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/70.jpg)
70April 27, 2023
Anti-Patterns
Soluções de projeto que não respeitam as regras de bons procedimentos em ES.Abstração, Flexibilidade e Modularidade
http://www.antipatterns.com
![Page 71: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/71.jpg)
71April 27, 2023
Anti-Patterns
From
http
://w
ww
.ant
ipat
tern
s.co
m/b
riefin
g/sl
d006
.htm
![Page 72: Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema](https://reader036.vdocuments.site/reader036/viewer/2022062818/570638431a28abb8238f1f1a/html5/thumbnails/72.jpg)
72April 27, 2023
Referências Adicionais
Apostila do Prof. Ivan (no site) Design Patterns Explained: A New
Perspective on Object-Oriented Design, Alan Shalloway, James R. Trott,
http://www.netobjectives.com/dpexplained/download/dpmatrix.pdf