SlideShare une entreprise Scribd logo
1  sur  145
Télécharger pour lire hors ligne
não de reuso
ClasseDerivada herda
atributos e operações
da ClassePai
ClasseAbstrata define
uma interface comum
para todas as suas
subclasses
Um objeto pode ter muitos tipos; objetos de
diferentes classes podem ter o mesmo tipo
Classe Tipo
Classe Tipo
Programe para uma interface e não para uma implementação
Para reuso, prefira composição à herança
1. Criar um objeto especificando sua classe explicitamente
2. Depender de operações específicas
3. Depender de uma plataforma de hardware ou software
4. Depender de implementação ou representação de
objeto
5. Depender de um algoritmo específico
6. Acoplamento forte
7. Estender funcionalidades usando herança
8. Inabilidade de alterar classes convenientemente
Helm Gamma Johnson Vlissides
Metsker, 2002
Intenção Padrão
Ajustar a interface de uma classe à interface que o
cliente espera
Adapter
Oferecer uma interface única para uma coleção de
classes
Façade
Definir uma interface que se aplica a objetos individuais
ou a grupos de objetos
Composite
Desacoplar uma abstração de sua implementação de
forma que as duas possam variar independentemente
Bridge
java.awt.event
Problemas?
Metsker, 2002
Intenção Padrão
Centralizar responsabilidade em uma única instância da classe Singleton
Desacoplar um objeto do conhecimento de quais outros objetos
dependem dele
Observer
Centralizar responsabilidade em uma classe que supervisiona
como um conjunto de outros objetos interagem
Mediator
Deixar um objeto atuar em nome de outro objeto Proxy
Permitir que uma requisição passe por uma sequência de objetos
até encontrar um que possa atendê-la
Chain of responsibility
Centralizar responsabilidade em pequenos objetos
compartilhados
Flyweight
In brief, smart pointers are C++ objects that simulate
simple pointers by implementing operator -> and the
unary operator *. In addition to sporting pointer syntax
and semantics, smart pointers often perform useful
tasks—such as memory management or locking—under
the covers, thus freeing the application from carefully
managing the lifetime of pointed-to objects.
Andrei Alexandrescu,
Modern C++ Design: Generic Programming and Design
Patterns Applied.
Addison-Wesley, 2001.
Criação
Uso
Liberação
Não permite a cópia!
pont1 deixa de ser
válido
(nullptr)
Fim do escopo mas não é a última referência:
destrutor não é invocado
Cópia do ponteiro
Observer 1 Observer 2
Construtor
Destrutor
Objetos construídos
Cada objeto referencia o outro (referência compartilhada)
Fim do escopo das referências,
mas recursos não são liberados
(vazamento de memória)
Referência compartilhada
Solução problemática
Cada objeto referencia o outro, mas sem posse (referência fraca)
Referência fraca
Referência fraca não detém a
posse do recurso alocado
(sem vazamento de memória)
Destrutores invocados
Solução com weak_ptr
Intrínseco (imutável)Extrínseco
Fábrica
Como se dá a criação de
objetos ao longo de uma
hierarquia de classes?
Como fazer se vários
construtores da mesma
classe colaboram entre si?
Intenção Padrão
Obter gradualmente a informação necessária
para construir um objeto
Builder
Adiar a decisão sobre qual classe instanciar Factory Method
Construir uma família de objetos Abstract Factory
Construir um objeto a partir de exemplo
existente
Prototype
Reconstruir um objeto a partir de informação de
estado anteriormente salva
Memento
Intenção Padrão
Implementar um algoritmo em um método, deixando a
definição de alguns passos do algoritmo para subclasses
que podem refiná-lo
Template Method
Distribuir uma operação de modo que cada classe
represente um estado diferente
State
Encapsular uma operação, tornado as implementações
intercambiáveis
Strategy
Encapsular a invocação de um método em um objeto Command
Distribuir uma operação de modo que cada
implementação seja aplicável a um tipo diferente de
composição
Interpreter
Intenção Padrão
Acrescentar responsabilidades adicionais a um
objeto dinamicamente
Decorator
Oferecer um modo de acessar uma coleção de
instâncias de uma classe
Iterator
Acrescentar novas operações a uma classe sem
alterar a classe
Visitor
http://proquestcombo.safaribooksonline.com/0-201-74397-3

Contenu connexe

Similaire à Padroes

Padroes De Projeto
Padroes De ProjetoPadroes De Projeto
Padroes De Projetoejdn1
 
DNAD 2009 - Injeção de Dependência (por Leandro Daniel)
DNAD 2009 - Injeção de Dependência (por Leandro Daniel)DNAD 2009 - Injeção de Dependência (por Leandro Daniel)
DNAD 2009 - Injeção de Dependência (por Leandro Daniel)Leandro Daniel
 
Arquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhrArquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhrThiago Boufleuhr
 
Apresentação curso de Extensão em Java (UERJ-IME) v1
Apresentação curso de Extensão em Java (UERJ-IME) v1Apresentação curso de Extensão em Java (UERJ-IME) v1
Apresentação curso de Extensão em Java (UERJ-IME) v1Marcelo Zeferino
 
GoF Design Patterns - Borland Conference (BorCon) 2004
GoF Design Patterns - Borland Conference (BorCon) 2004GoF Design Patterns - Borland Conference (BorCon) 2004
GoF Design Patterns - Borland Conference (BorCon) 2004Daniel Wildt
 
Apresentação Introdução Design Patterns
Apresentação Introdução Design PatternsApresentação Introdução Design Patterns
Apresentação Introdução Design PatternsLucas Simões Maistro
 
Construção de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaConstrução de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaFernando Camargo
 
Padrão de Projetos singleton
Padrão de Projetos singletonPadrão de Projetos singleton
Padrão de Projetos singletonWendel Moreira
 
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Adriano Teixeira de Souza
 
Conceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosConceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosLeonardo Melo Santos
 
design patterns - introdução
design patterns - introduçãodesign patterns - introdução
design patterns - introduçãoelliando dias
 
Orientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidOrientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidIury Teixeira
 

Similaire à Padroes (20)

Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Padroes De Projeto
Padroes De ProjetoPadroes De Projeto
Padroes De Projeto
 
DNAD 2009 - Injeção de Dependência (por Leandro Daniel)
DNAD 2009 - Injeção de Dependência (por Leandro Daniel)DNAD 2009 - Injeção de Dependência (por Leandro Daniel)
DNAD 2009 - Injeção de Dependência (por Leandro Daniel)
 
Arquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhrArquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhr
 
Padrões de design orientado a objetos
Padrões de design orientado a objetosPadrões de design orientado a objetos
Padrões de design orientado a objetos
 
Padrões de projeto
Padrões de projetoPadrões de projeto
Padrões de projeto
 
Apresentação curso de Extensão em Java (UERJ-IME) v1
Apresentação curso de Extensão em Java (UERJ-IME) v1Apresentação curso de Extensão em Java (UERJ-IME) v1
Apresentação curso de Extensão em Java (UERJ-IME) v1
 
Gof design patterns
Gof design patternsGof design patterns
Gof design patterns
 
Padrões de Projeto de Software
Padrões de Projeto de SoftwarePadrões de Projeto de Software
Padrões de Projeto de Software
 
GoF Design Patterns - Borland Conference (BorCon) 2004
GoF Design Patterns - Borland Conference (BorCon) 2004GoF Design Patterns - Borland Conference (BorCon) 2004
GoF Design Patterns - Borland Conference (BorCon) 2004
 
Apresentação Introdução Design Patterns
Apresentação Introdução Design PatternsApresentação Introdução Design Patterns
Apresentação Introdução Design Patterns
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Construção de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaConstrução de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em Java
 
Padrão de Projetos singleton
Padrão de Projetos singletonPadrão de Projetos singleton
Padrão de Projetos singleton
 
Padroes de Projeto
Padroes de ProjetoPadroes de Projeto
Padroes de Projeto
 
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
 
Conceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosConceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetos
 
Java 00 Poo
Java 00 PooJava 00 Poo
Java 00 Poo
 
design patterns - introdução
design patterns - introduçãodesign patterns - introdução
design patterns - introdução
 
Orientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidOrientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores Android
 

Plus de Ivan Ricarte

Aula catalogo de refatoracoes
Aula   catalogo de refatoracoesAula   catalogo de refatoracoes
Aula catalogo de refatoracoesIvan Ricarte
 
Testes de unidade em Java: JUnit
Testes de unidade em Java: JUnitTestes de unidade em Java: JUnit
Testes de unidade em Java: JUnitIvan Ricarte
 
Refatoração: Code smells
Refatoração: Code smellsRefatoração: Code smells
Refatoração: Code smellsIvan Ricarte
 
Aplicacoes web semantica saude
Aplicacoes web semantica saudeAplicacoes web semantica saude
Aplicacoes web semantica saudeIvan Ricarte
 
R - Software Estatistico
R - Software EstatisticoR - Software Estatistico
R - Software EstatisticoIvan Ricarte
 
Aula revisão de java e junit
Aula   revisão de java e junitAula   revisão de java e junit
Aula revisão de java e junitIvan Ricarte
 
C++: biblioteca padrão de templates - Parte 1
C++: biblioteca padrão de templates - Parte 1C++: biblioteca padrão de templates - Parte 1
C++: biblioteca padrão de templates - Parte 1Ivan Ricarte
 
Membros de classes C++
Membros de classes C++Membros de classes C++
Membros de classes C++Ivan Ricarte
 
Princípios da organização de código fonte C++
Princípios da organização de código fonte C++Princípios da organização de código fonte C++
Princípios da organização de código fonte C++Ivan Ricarte
 
Problemas no desenvolvimento do software
Problemas no desenvolvimento do softwareProblemas no desenvolvimento do software
Problemas no desenvolvimento do softwareIvan Ricarte
 
Aula 01 - As linguagens do software (2015)
Aula 01 - As linguagens do software (2015)Aula 01 - As linguagens do software (2015)
Aula 01 - As linguagens do software (2015)Ivan Ricarte
 
SI300 - Apoio a atividades práticas em C++ (01)
SI300 - Apoio a atividades práticas em C++ (01)SI300 - Apoio a atividades práticas em C++ (01)
SI300 - Apoio a atividades práticas em C++ (01)Ivan Ricarte
 
O Projeto Evid@SP - Disseminação de evidências a profissionais da saúde
O Projeto Evid@SP - Disseminação de evidências a profissionais da saúdeO Projeto Evid@SP - Disseminação de evidências a profissionais da saúde
O Projeto Evid@SP - Disseminação de evidências a profissionais da saúdeIvan Ricarte
 
Um novo paradigma para o ensino de ponteiros frente à evolução de C++
Um novo paradigma para o ensino de ponteiros frente à evolução de C++Um novo paradigma para o ensino de ponteiros frente à evolução de C++
Um novo paradigma para o ensino de ponteiros frente à evolução de C++Ivan Ricarte
 
Pesquisa com métodos quantitativos
Pesquisa com métodos quantitativosPesquisa com métodos quantitativos
Pesquisa com métodos quantitativosIvan Ricarte
 
Programação orientada a objetos: herança
Programação orientada a objetos: herançaProgramação orientada a objetos: herança
Programação orientada a objetos: herançaIvan Ricarte
 
Prontuário eletrônico do paciente e padrões: por que, por quem, para quem?
Prontuário eletrônico do paciente e padrões: por que, por quem, para quem?Prontuário eletrônico do paciente e padrões: por que, por quem, para quem?
Prontuário eletrônico do paciente e padrões: por que, por quem, para quem?Ivan Ricarte
 

Plus de Ivan Ricarte (20)

Aula catalogo de refatoracoes
Aula   catalogo de refatoracoesAula   catalogo de refatoracoes
Aula catalogo de refatoracoes
 
Testes de unidade em Java: JUnit
Testes de unidade em Java: JUnitTestes de unidade em Java: JUnit
Testes de unidade em Java: JUnit
 
Refatoração: Code smells
Refatoração: Code smellsRefatoração: Code smells
Refatoração: Code smells
 
Aplicacoes web semantica saude
Aplicacoes web semantica saudeAplicacoes web semantica saude
Aplicacoes web semantica saude
 
R - Software Estatistico
R - Software EstatisticoR - Software Estatistico
R - Software Estatistico
 
Aula revisão de java e junit
Aula   revisão de java e junitAula   revisão de java e junit
Aula revisão de java e junit
 
C++: biblioteca padrão de templates - Parte 1
C++: biblioteca padrão de templates - Parte 1C++: biblioteca padrão de templates - Parte 1
C++: biblioteca padrão de templates - Parte 1
 
c++ construtores
c++ construtoresc++ construtores
c++ construtores
 
C++ Sobrecarga
C++ SobrecargaC++ Sobrecarga
C++ Sobrecarga
 
Membros de classes C++
Membros de classes C++Membros de classes C++
Membros de classes C++
 
UML e POO
UML e POOUML e POO
UML e POO
 
Princípios da organização de código fonte C++
Princípios da organização de código fonte C++Princípios da organização de código fonte C++
Princípios da organização de código fonte C++
 
Problemas no desenvolvimento do software
Problemas no desenvolvimento do softwareProblemas no desenvolvimento do software
Problemas no desenvolvimento do software
 
Aula 01 - As linguagens do software (2015)
Aula 01 - As linguagens do software (2015)Aula 01 - As linguagens do software (2015)
Aula 01 - As linguagens do software (2015)
 
SI300 - Apoio a atividades práticas em C++ (01)
SI300 - Apoio a atividades práticas em C++ (01)SI300 - Apoio a atividades práticas em C++ (01)
SI300 - Apoio a atividades práticas em C++ (01)
 
O Projeto Evid@SP - Disseminação de evidências a profissionais da saúde
O Projeto Evid@SP - Disseminação de evidências a profissionais da saúdeO Projeto Evid@SP - Disseminação de evidências a profissionais da saúde
O Projeto Evid@SP - Disseminação de evidências a profissionais da saúde
 
Um novo paradigma para o ensino de ponteiros frente à evolução de C++
Um novo paradigma para o ensino de ponteiros frente à evolução de C++Um novo paradigma para o ensino de ponteiros frente à evolução de C++
Um novo paradigma para o ensino de ponteiros frente à evolução de C++
 
Pesquisa com métodos quantitativos
Pesquisa com métodos quantitativosPesquisa com métodos quantitativos
Pesquisa com métodos quantitativos
 
Programação orientada a objetos: herança
Programação orientada a objetos: herançaProgramação orientada a objetos: herança
Programação orientada a objetos: herança
 
Prontuário eletrônico do paciente e padrões: por que, por quem, para quem?
Prontuário eletrônico do paciente e padrões: por que, por quem, para quem?Prontuário eletrônico do paciente e padrões: por que, por quem, para quem?
Prontuário eletrônico do paciente e padrões: por que, por quem, para quem?
 

Dernier

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 

Dernier (6)

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

Padroes

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 10. ClasseDerivada herda atributos e operações da ClassePai ClasseAbstrata define uma interface comum para todas as suas subclasses
  • 11. Um objeto pode ter muitos tipos; objetos de diferentes classes podem ter o mesmo tipo
  • 13. Programe para uma interface e não para uma implementação
  • 14. Para reuso, prefira composição à herança
  • 15.
  • 16.
  • 17.
  • 18. 1. Criar um objeto especificando sua classe explicitamente 2. Depender de operações específicas 3. Depender de uma plataforma de hardware ou software 4. Depender de implementação ou representação de objeto
  • 19. 5. Depender de um algoritmo específico 6. Acoplamento forte 7. Estender funcionalidades usando herança 8. Inabilidade de alterar classes convenientemente
  • 20. Helm Gamma Johnson Vlissides
  • 21.
  • 23.
  • 24. Intenção Padrão Ajustar a interface de uma classe à interface que o cliente espera Adapter Oferecer uma interface única para uma coleção de classes Façade Definir uma interface que se aplica a objetos individuais ou a grupos de objetos Composite Desacoplar uma abstração de sua implementação de forma que as duas possam variar independentemente Bridge
  • 25.
  • 26.
  • 27.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 41.
  • 42. Intenção Padrão Centralizar responsabilidade em uma única instância da classe Singleton Desacoplar um objeto do conhecimento de quais outros objetos dependem dele Observer Centralizar responsabilidade em uma classe que supervisiona como um conjunto de outros objetos interagem Mediator Deixar um objeto atuar em nome de outro objeto Proxy Permitir que uma requisição passe por uma sequência de objetos até encontrar um que possa atendê-la Chain of responsibility Centralizar responsabilidade em pequenos objetos compartilhados Flyweight
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63. In brief, smart pointers are C++ objects that simulate simple pointers by implementing operator -> and the unary operator *. In addition to sporting pointer syntax and semantics, smart pointers often perform useful tasks—such as memory management or locking—under the covers, thus freeing the application from carefully managing the lifetime of pointed-to objects. Andrei Alexandrescu, Modern C++ Design: Generic Programming and Design Patterns Applied. Addison-Wesley, 2001.
  • 64.
  • 65.
  • 67. Não permite a cópia!
  • 68. pont1 deixa de ser válido (nullptr)
  • 69.
  • 70. Fim do escopo mas não é a última referência: destrutor não é invocado Cópia do ponteiro
  • 72. Construtor Destrutor Objetos construídos Cada objeto referencia o outro (referência compartilhada) Fim do escopo das referências, mas recursos não são liberados (vazamento de memória) Referência compartilhada Solução problemática
  • 73. Cada objeto referencia o outro, mas sem posse (referência fraca) Referência fraca Referência fraca não detém a posse do recurso alocado (sem vazamento de memória) Destrutores invocados Solução com weak_ptr
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 84.
  • 85.
  • 86.
  • 87. Como se dá a criação de objetos ao longo de uma hierarquia de classes? Como fazer se vários construtores da mesma classe colaboram entre si?
  • 88. Intenção Padrão Obter gradualmente a informação necessária para construir um objeto Builder Adiar a decisão sobre qual classe instanciar Factory Method Construir uma família de objetos Abstract Factory Construir um objeto a partir de exemplo existente Prototype Reconstruir um objeto a partir de informação de estado anteriormente salva Memento
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100.
  • 101.
  • 102.
  • 103.
  • 104.
  • 105.
  • 106. Intenção Padrão Implementar um algoritmo em um método, deixando a definição de alguns passos do algoritmo para subclasses que podem refiná-lo Template Method Distribuir uma operação de modo que cada classe represente um estado diferente State Encapsular uma operação, tornado as implementações intercambiáveis Strategy Encapsular a invocação de um método em um objeto Command Distribuir uma operação de modo que cada implementação seja aplicável a um tipo diferente de composição Interpreter
  • 107.
  • 108.
  • 109.
  • 110.
  • 111.
  • 112.
  • 113.
  • 114.
  • 115.
  • 116.
  • 117.
  • 118.
  • 119.
  • 120.
  • 121.
  • 122.
  • 123.
  • 124.
  • 125.
  • 126.
  • 127.
  • 128. Intenção Padrão Acrescentar responsabilidades adicionais a um objeto dinamicamente Decorator Oferecer um modo de acessar uma coleção de instâncias de uma classe Iterator Acrescentar novas operações a uma classe sem alterar a classe Visitor
  • 129.
  • 130.
  • 131.
  • 132.
  • 133.
  • 134.
  • 135.
  • 136.
  • 137.
  • 138.
  • 139.
  • 140.
  • 141.
  • 142.
  • 143.
  • 144.