![Page 1: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/1.jpg)
Design Patterns
Projeto de Sistemas de Software
![Page 2: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/2.jpg)
© LES/PUC-Rio
Sumário
• Reuso de Software
– Introdução
– Benefícios e Desvantagens
– Visão do Reuso
• Padrões de Projeto
– Introdução
– Motivação
– Alguns Padrões
• Singleton
• Facade
• Command
• Observer
• DAO
• Filter
![Page 3: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/3.jpg)
Reuso de Software
![Page 4: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/4.jpg)
© LES/PUC-Rio
Introdução
• Maioria das Engenharias
– Desenvolvimento de sistemas
• Composição de componentes existentes
• Componentes usados em outros sistemas
• Engenharia de Software
– Antes
• Focado no desenvolvimento original
– Agora
• Processo de desenvolvimento baseado em um reuso de software sistematizado, trazendo
– Software de melhor qualidade
– Desenvolvimento mais rápido
– Menor custo
![Page 5: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/5.jpg)
© LES/PUC-Rio
Engenharia de Software baseada em Reuso
• Reuso de Sistemas
– Incorporação de um sistema, sem alterá-lo, em outro sistema
– Desenvolvimento de famílias de aplicações
• Reuso de Componentes
– Sub-sistemas de uma aplicação a simples objetos
• Reuso de Objetos e Funções
– Objetos simples e bem definidos
– Funções
![Page 6: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/6.jpg)
© LES/PUC-Rio
Benefícios
• Confiabilidade Crescente
– Toda vez que um software é utilizado, ele é novamente testado
– Componentes já utilizados e testados em outros sistemas são mais confiáveis que novos componentes
• Risco de Processo Reduzido
– Margem de erro dos custos de reuso menor que dos custos de desenvolvimento
• Uso Efetivo de Especialistas
– Especialista desenvolve software reutilizável encapsulando seu conhecimento, ao invés de desenvolver as mesmas funcionalidades repetidas vezes em diferentes projetos
![Page 7: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/7.jpg)
© LES/PUC-Rio
Benefícios
• Conformidade com Padrões
– Uso de padrões organizacionais agiliza o desenvolvimento
• Estabelece uma base comum de comunicação
• Garante a consistência
– Exemplo: padrões de interface
• Desenvolvimento Acelerado
– Redução do tempo de desenvolvimento e de validação
![Page 8: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/8.jpg)
© LES/PUC-Rio
Problemas
• Custos de Manutenção Crescente
– Dificuldade de adaptar componentes sem o código fonte
• Falta de Ferramentas de Suporte
– Ferramentas CASE podem não suportar desenvolvimento com reuso
• Síndrome do “não foi inventado aqui”
– Falta de confiança no componente
– Desenvolver é visto como mais desafiador que reutilizar
• Criar e Manter uma biblioteca de Componentes
– Custo de criar e manter a biblioteca pode ser grande
– Técnicas de classificar, catalogar e recuperar os componentes são imaturas
• Encontrar, Entender e Adaptar Componentes Reusáveis
– Busca de componentes como parte do processo de desenvolvimento
![Page 9: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/9.jpg)
© LES/PUC-Rio
Visão do Reuso
Linhas de Produto de Aplicação
Desenvolvimento baseado em Componentes
Frameworks
Padrões de Projeto
Desenvolvimento de Software Orientado a Aspectos
Empacotamento de Sistemas Legados
Integração de COTS
Geradores de Programas
Aplicações Verticais Configuráveis
Sistemas orientados a Serviços
Bibliotecas de Programas
![Page 10: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/10.jpg)
© LES/PUC-Rio
Visão do Reuso
• Padrões de Projeto– Abstrações genéricas que ocorrem nas aplicações
• Desenvolvimento baseado em Componentes– Sistemas desenvolvidos pela integração de componentes
• Frameworks– Coleção de classes abstratas e concretas que podem ser
adaptadas e estendidas para a criação de aplicações
• Empacotamento de Sistemas Legados– Interfaces podem ser definidas para prover acesso a sistemas
legados
• Sistemas Orientados a Serviços– Sistemas desenvolvidos pela ligação com serviços
compartilhados
– Serviços podem ser externos
![Page 11: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/11.jpg)
© LES/PUC-Rio
Visão do Reuso
• Linhas de Produto de Aplicação– Tipo de aplicação generalizado em uma arquitetura comum que pode
ser adaptada de diferentes modos para diferentes clientes
• Integração de COTS (Commercial off-the-shelf)– Termo que permite desenvolver a partir de componentes já criados e
realizar adaptações– Sistemas desenvolvidos pela integração de aplicações existentes
• Aplicações Verticais Configuráveis– Desenvolvimento de sistemas genéricos que podem ser configurados às
necessidades de clientes de um sistema específico
• Bibliotecas de Programas– Biblioteca de Classes e Funções comumente usadas
• Geradores de Programas– Sistema Gerador tem conhecimento de tipos particulares de aplicação e
pode gerar sistemas ou fragmentos de sistemas
• Desenvolvimento de Software Orientado a Aspectos– Componentes compartilhados são entrelaçados na aplicação em
diferentes partes quando o programa é compilado
![Page 12: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/12.jpg)
Padrões de Projeto
![Page 13: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/13.jpg)
© LES/PUC-Rio
Definição: Padrão
“Cada padrão descreve um problema que ocorre repetidas vezes em nosso ambiente, e então descreve o núcleo da sua solução para aquele
problema, de tal maneira que seja possível usar essa solução milhões de vezes sem nunca fazê-la
da mesma forma duas vezes.”
Christopher Alexander sobre padrões em arquitetura de construções
![Page 14: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/14.jpg)
© LES/PUC-Rio
Definição: Padrão 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 de
projeto genérico em um contexto específico.”
Gamma, Helm, Vlissides & Johnson, sobre padrões de projeto em software
![Page 15: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/15.jpg)
© LES/PUC-Rio
Definição: Padrão de Projeto
• Forma de reusar conhecimento abstrato sobre um problema e sua solução
• Suficientemente abstrato para ser reusado sob diferentes contextos
– descrições de problemas e essências de soluções
– aplicáveis em classes de problemas bem conhecidos
– soluções que funcionam, tornando-se “receitas” para situações similares
• Freqüentemente usa características da OO como herança e polimorfismo
![Page 16: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/16.jpg)
© LES/PUC-Rio
Definição: Padrão de Projeto
• Inspirados em “A Pattern Language” de Christopher Alexander
– Padrões de arquitetura de cidades, casas e prédios
• Design Patterns: Elements of Reusable Object-Oriented Software
– Catálogo publicado em 1994
– Erich Gamma, John Vlissides, Ralph Jonhson e Richard Helm, conhecidos como “The Gang of Four” (GoF)
– 23 padrões de projeto
![Page 17: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/17.jpg)
© LES/PUC-Rio
Benefícios
• Aprendizagem com a experiência dos outros– Identificação de problemas comuns de projeto de software– Utilização de soluções testadas e bem documentadas– Ajuda um novato a agir mais como um experiente
• Produção de bons projetos orientados a objetos– Normalmente utilizam boas práticas de OO– Utilizam eficientemente polimorfismo, herança e composição
• Vocabulário comum– Uso de soluções que têm nome facilita comunicação– Nível mais alto de abstração
• Ajuda na documentação– Uso de soluções que têm um nome facilita a documentação– Conhecimento de padrões de projeto torna mais fácil a compreensão de
sistemas existentes
• Ajuda na conversão de um modelo de análise em um modelo de implementação
• Aumento da produtividade
![Page 18: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/18.jpg)
© LES/PUC-Rio
Elementos Essenciais
• Nome
– Procura descrever o problema, a solução e as conseqüências em uma ou duas palavras.
• Problema
– Quando aplicar o padrão e em que condições
• Solução
– Descrição abstrata de um problema
– Como usar os elementos disponíveis (classes e objetos) para solucioná-lo
• Conseqüências
– Custos e benefícios de se aplicar o padrão
– Impacto na flexibilidade, reusabilidade e eficiência do sistema
![Page 19: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/19.jpg)
© LES/PUC-Rio
Livros sobre Padrões de Software
Categoria do Padrão
Título Autores / Editores
Análise OO Analysis Patterns: Reusable Object Models Martin Fowler
ArquiteturaPattern-Oriented Software Architecture: A System of Patterns
Buschmann et al.
Projeto
Design Patterns: Elements of Reusable Object-Oriented Software
Gamma et al.
Anti-Patterns: Refactoring Software, Architectures, and Projects in Crisis
William J. Brown et al.
Design Patterns Java™ Workbook Steven John Metsker
![Page 20: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/20.jpg)
© LES/PUC-Rio
Livro: Padrões de Projeto da GoF
• Catálogo de 23 padrões
• Não apresenta padrão para um domínio de aplicação específico
• Padrões do GoF representam o estado-da-prática em boas construções de projeto orientado a objetos
• É comum encontrar no detalhamento de padrões específicos de domínio a ocorrência de algum dos padrões do GoF
![Page 21: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/21.jpg)
© LES/PUC-Rio
Livro: Padrões de Projeto da GoF
• Classificação– Padrões de Criação
• Abstraem o processo de instanciação
• Tornam um sistema independente da forma como os objetos são criados, compostos e representados
![Page 22: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/22.jpg)
© LES/PUC-Rio
Livro: Padrões de Projeto da GoF
• Classificação– Padrões Estruturais
• Lidam com a composição de classes (ou objetos) para formar grandes estruturas no sistema
![Page 23: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/23.jpg)
© LES/PUC-Rio
Livro: Padrões de Projeto da GoF
• Classificação– Padrões Comportamentais
• Caracterizam a forma como classes (ou objetos) interagem
• Distribuem responsabilidade
![Page 24: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/24.jpg)
© LES/PUC-Rio
Livro: Padrões de Projeto da GoF
• Classificação– Padrões Comportamentais
• Caracterizam a forma como classes (ou objetos) interagem
• Distribuem responsabilidade
![Page 25: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/25.jpg)
© LES/PUC-Rio
Livro: Padrões de Projeto da GoF
1. Abstract Factory
2. Builder
3. Factory Method
4. Prototype
5. Singleton
6. Adapter
7. Bridge
8. Composite
9. Decorator
10.Facade
11.Flyweight
12.Proxy
13.Chain of Responsibility
14.Command
15.Interpreter
16.Iterator
17.Mediator
18.Memento
19.Observer
20.State
21.Strategy
22.Template Method
23.Visitor
Padrões de CriaçãoPadrões EstruturaisPadrões de Comportamento
![Page 26: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/26.jpg)
© LES/PUC-Rio
Livro: Padrões de Projeto da GoF
• Template1. Pattern Name and Classification
2. Intent
3. Also Known as
4. Motivation
5. Applicability
6. Structure
7. Participants
8. Collaborations
9. Consequences
10.Implementation
11.Sample Code
12.Known Uses
13.Related Patterns
![Page 27: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/27.jpg)
© LES/PUC-Rio
Livro: Padrões de Projeto do POSA
• POSA – Pattern-Oriented Software Architecture: A System of Patterns
• Categoriza os padrões em 3 categorias
– Padrões Arquiteturais
– Padrões de Projeto
– Idiomas
![Page 28: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/28.jpg)
© LES/PUC-Rio
Livro: Padrões de Projeto do POSA
• Padrões Arquiteturais
– Expressam um esquema de organização estrutural para sistemas de software
– Oferecem um conjunto de subsistemas pré-definidos, especifica suas respectivas responsabilidades e inclui regras e diretrizes para organizar as relações entre eles
– Exemplos
• MVC
• Broker
• Layer
• Reflection
![Page 29: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/29.jpg)
© LES/PUC-Rio
Livro: Padrões de Projeto do POSA
• Padrões de Projeto
– Oferece um esquema para refinar os subsistemas ou componentes de um sistema de software ou as relações entre eles.
– São considerados padrões de média escala
– Exemplos
• Singleton
• Observer
• Adapter
• Command
• Strategy
![Page 30: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/30.jpg)
© LES/PUC-Rio
Livro: Padrões de Projeto do POSA
• Idiomas– Padrão de baixo nível específico de uma linguagem de
programação
– Mostra como se pode implementar um dado componente/classe ou interação entre componentes/classes usando os recursos de uma LP
– Exemplos
• Singleton em C++ ou em Java
• Counted Pointer: gerência de memória em C++
![Page 31: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/31.jpg)
© LES/PUC-Rio
Livro: Padrões de Projeto do POSA
• Template
1. Name
2. As Known as
3. Example
4. Context
5. Problem
6. Solution
7. Structure
8. Dynamics
9. Implementation
10.Example Resolved
11.Variants
12.Known Uses
13.Consequences
14.See Also
![Page 32: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/32.jpg)
© LES/PUC-Rio
Pattern Community
• Hillside Group (www.hillside.net)
– Instituição sem fins lucrativos
– Objetivo: disseminar e estimular o uso de padrões ao longo do desenvolvimento de software
• Organiza as chamadas PLOPs conferências
– Plop, Europlop, SugarloafPlop, KoalaPlop
– Dinâmica distinta de um evento comum
• Apresentação de novos padrões
• Apresentação de sistemas que utilizam padrões
• Divulgação de pesquisas relacionadas a padrões
![Page 33: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/33.jpg)
Alguns Padrões de Projeto
![Page 34: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/34.jpg)
© LES/PUC-Rio
Alguns Padrões de Projeto
• Singleton
• Facade
• Command
• Observer
• State
• Strategy
• Template Method
• Composite
![Page 35: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/35.jpg)
© LES/PUC-Rio
Singleton
• Motivação
– Garantir que apenas um objeto exista
• Independentemente do número de requisições que receber para criá-lo
– Exemplos de aplicação
• Único banco de dados
• Único acesso ao arquivo de log
• Única fachada (padrão Facade)
![Page 36: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/36.jpg)
© LES/PUC-Rio
Singleton
• Propósito
– Assegurar que classe tenha instância única
– Ponto de acesso global a ela
• Aplicabilidade
– Exatamente uma instância da classe
• Acessível pelos clientes de ponto de acesso bem conhecido
– Instância única deve ser extensível através de subclasses
• Clientes capazes de usar instância estendida sem alterar seu código
![Page 37: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/37.jpg)
© LES/PUC-Rio
Singleton
• Estrutura
• Participantes
– Singleton
• Define operação Instance que permite que clientes acessem instância única
– Instance é operação de classe
• Pode ser responsável pela criação de sua única instância
![Page 38: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/38.jpg)
© LES/PUC-Rio
Singleton
• Conseqüências
– Acesso controlado a instância única
– Espaço de nomes reduzido
– Refinamento de operações e representação
– Número variado de instâncias
– Mais flexível do que operações de classes
![Page 39: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/39.jpg)
© LES/PUC-Rio
Singleton
![Page 40: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/40.jpg)
© LES/PUC-Rio
Facade
• Motivação
![Page 41: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/41.jpg)
© LES/PUC-Rio
Facade
• Motivação
![Page 42: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/42.jpg)
© LES/PUC-Rio
Facade
• Propósito
– Prover interface unificada para conjunto de interfaces em um subsistema
– Define interface de alto-nível
• Subsistema mais fácil de usar
• Aplicabilidade
– Prover interface simples para subsistema complexo
– Muitas dependências entre clientes e classes que implementam uma abstração
– Criar camadas no subsistema
![Page 43: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/43.jpg)
© LES/PUC-Rio
Facade
• Estrutura
![Page 44: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/44.jpg)
© LES/PUC-Rio
Facade
• Participantes
– Facade
• Conhece quais classes do subsistema seriam responsáveis pelo atendimento de uma solicitação
• Delega solicitações de clientes a objetos apropriados do subsistemas
– Classes de subsistema
• Implementam as funcionalidades do subsistema
• Respondem a solicitações de serviços da Facade
• Não têm conhecimento da Facade
![Page 45: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/45.jpg)
© LES/PUC-Rio
Facade
• Conseqüências
– Esconde do cliente os componentes do subsistema
• Reduz o número de objetos que os clientes lidam
• Subsistema mais fácil de usar
– Fraco acoplamento entre subsistema e seus clientes
– Não impede que aplicações usem classes do subsistema, caso elas precisem
![Page 46: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/46.jpg)
© LES/PUC-Rio
Facade
![Page 47: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/47.jpg)
© LES/PUC-Rio
Command
• Motivação
![Page 48: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/48.jpg)
© LES/PUC-Rio
Command
• Propósito
– Encapsular requisição como objeto
• Permite parametrizar clientes com diferentes requisições
– Dar suporte a operações que não podem ser desfeitas
• Aplicabilidade
– Parametrizar objetos por ação a ser realizada
– Especificar, enfileirar e executar requisições em diferentes momentos
– Suportar “desfazer”
– Suportar log de alterações
• Podem ser reaplicadas caso o sistema falhe
– Estruturar o sistema em operações de alto nível construídas sobre operações primitivas
![Page 49: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/49.jpg)
© LES/PUC-Rio
Command
• Estrutura
![Page 50: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/50.jpg)
© LES/PUC-Rio
Command
• Participantes– Command
• Define interface para a execução de uma operação
– ConcreteCommand
• Define uma vinculação entre um objeto Receiver e uma ação
• Implementa Execute através da invocação da(s) correspondente(s) operação(ões) no Receiver
– Client
• Cria um objeto ConcreteCommand e estabelece o seu receptor (Receiver)
– Invoker
• Solicita ao Command a execução da solicitação
– Receiver
• Sabe como executar as operações associadas a uma solicitação
– Qualquer classe pode funcionar como um receiver
![Page 51: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/51.jpg)
© LES/PUC-Rio
Command
• Conseqüências
– Desacopla objeto que invoca operação do que sabe realizá-la
– Comandos são objetos de “primeira classe”
– Comandos podem ser reunidos para fazer um comando composto
– Facilidade de adicionar novos comandos
![Page 52: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/52.jpg)
© LES/PUC-Rio
Command
![Page 53: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/53.jpg)
© LES/PUC-Rio
Observer
![Page 54: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/54.jpg)
© LES/PUC-Rio
Observer
• Propósito
– Dependência de um-para-muitos entre objetos
• Quando um objeto muda de estado, todos seus dependentes são notificados e atualizados automaticamente
• Aplicabilidade
– Abstração tem dois aspectos, um dependente do outro
• Encapsular estes aspectos em objetos separados permite variação e reuso independentemente
– Mudança em um objeto requer alterar outros
• Não se sabe quantos objetos precisam ser alterados
– Objeto capaz de notificar outros objetos sem presumir quem são esses objetos
![Page 55: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/55.jpg)
© LES/PUC-Rio
Observer
• Estrutura
![Page 56: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/56.jpg)
© LES/PUC-Rio
Observer
• 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 57: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/57.jpg)
© LES/PUC-Rio
Observer
• Conseqüências
– Acoplamento abstrato entre Sujeito e Observador
– Suporte a comunicação em broadcast
– Atualizações inesperadas
![Page 58: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/58.jpg)
© LES/PUC-Rio
Observer
![Page 59: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/59.jpg)
© LES/PUC-Rio
State
• Motivação
![Page 60: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/60.jpg)
© LES/PUC-Rio
State
• Propósito
– Objeto altera seu comportamento quando seu estado interno muda
– Objeto parece mudar de classe
• Aplicabilidade
– Comportamento do objeto depende do seu estado
• Alterar seu comportamento em tempo de execução de acordo com seu estado
– Operações têm muitos comandos condicionais que dependem do estado do objeto
![Page 61: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/61.jpg)
© LES/PUC-Rio
State
• Estrutura
![Page 62: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/62.jpg)
© LES/PUC-Rio
State
• Participantes
– Context
• Define interface de interesse para os clientes
• Mantém uma instância de uma subclasse ConcreteState que define o estado corrente
– State
• Define interface para encapsulamento associado com um determinado estado do Context
– ConcreteState
• Cada subclasse implementa um comportamento associado com um estado do Context
![Page 63: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/63.jpg)
© LES/PUC-Rio
State
• Conseqüências
– Agrupamento do comportamento específico ao estado
• Particiona comportamento em diferentes estados
– Faz transição de estado explícita
– Estado dos objetos pode ser compartilhado
![Page 64: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/64.jpg)
© LES/PUC-Rio
State
![Page 65: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/65.jpg)
© LES/PUC-Rio
State
![Page 66: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/66.jpg)
© LES/PUC-Rio
Strategy
• Motivação
– Muitos algoritmos para quebrar um texto em linhas
• Separar o algoritmo de quebra de linha do cliente simplifica a codificação do mesmo
• Diferentes algoritmos são apropriados para diferentes aplicações
• Tornar o algoritmo parte do cliente dificulta adição de novos algoritmos
![Page 67: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/67.jpg)
© LES/PUC-Rio
Strategy
• Propósito
– Define família de algoritmos
• Encapsula cada um
• São intercambiáveis
– Algoritmo varia independentemente dos clientes que o usam
• Aplicabilidade
– Muitas classes relacionadas diferem apenas no seu comportamento
– Necessidade de diferentes variações de um algoritmo
– Algoritmo usa dados que os clientes não devem conhecer
– Classe define diferentes comportamentos
• Aparecem como múltiplos comandos condicionais nas operações
![Page 68: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/68.jpg)
© LES/PUC-Rio
Strategy
• Estrutura
![Page 69: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/69.jpg)
© LES/PUC-Rio
Strategy
• Participantes
– Strategy
• Define uma interface comum para todos os algoritmos suportados
• Context usa esta interface para chamar o algoritmo definido por uma ConcreteStrategy
– ConcreteStrategy
• Implementa o algoritmo usando a interface de Strategy
– Context
• Configurado com um objeto ConcreteStrategy
• Mantém referência para um objeto Strategy
• Pode definir uma interface que permite a Strategy acessar seus dados
![Page 70: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/70.jpg)
© LES/PUC-Rio
Strategy
• Conseqüências
– Famílias de algoritmos relacionados
– Alternativa a subclasses
– Estratégias eliminam comandos condicionais
– Escolha de implementações
– Clientes devem estar atentos a diferentes estratégias
– Overhead na comunicação entre Estratégia e Contexto
– Maior número de objetos
![Page 71: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/71.jpg)
© LES/PUC-Rio
Strategy
Outro exemplo:Colletions.sort(List,Comparator)
![Page 72: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/72.jpg)
© LES/PUC-Rio
Template Method
• Motivação
![Page 73: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/73.jpg)
© LES/PUC-Rio
Template Method
• Propósito
– Esqueleto de um algoritmo em uma operação
• Delega alguns passos às subclasses
– Redefinição de alguns passos de um algoritmo sem alterar a estrutura do algoritmo
• Aplicabilidade
– Implementar partes invariantes de um algoritmo
• Deixar às subclasses implementar as partes que variam
– Comportamento comum entre subclasses deve ser fatorado e agrupado em uma classe comum
• Evitar replicação de código
– Controlar extensões das subclasses
![Page 74: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/74.jpg)
© LES/PUC-Rio
Template Method
• Estrutura
![Page 75: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/75.jpg)
© LES/PUC-Rio
Template Method
• Participantes
– AbstractClass
• Define operações primitivas abstratas que implementam passos de um algoritmo
• Implementa um método template que define o esqueleto de um algoritmo
• Método template chama as operações abstratas
– ConcreteClass
• Implementa as operações primitivas para realizar passos específicos do algoritmo
![Page 76: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/76.jpg)
© LES/PUC-Rio
Template Method
• Conseqüências
– Maximiza a reutilização de código
– Definição de “ganchos” para as subclasses
• “Princípio de Hollywood”
![Page 77: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/77.jpg)
© LES/PUC-Rio
Template Method
![Page 78: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/78.jpg)
© LES/PUC-Rio
Composite
• Motivação
– Aplicações de manipulação de objetos gráficas
• Usuários manipulam uma série de diferentes figuras
– Figuras podem em muitos casos serem também agrupadas em figuras mais complexas
– Alternativa de projeto poderia separar objetos mais simples (Line, Figure) e objetos que agregam esses mais simples
– Problema
• Classes do sistema devem tratar de forma distinta cada um dos objetos, mas diversas operações de manipulação deles são comuns
![Page 79: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/79.jpg)
© LES/PUC-Rio
Composite
![Page 80: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/80.jpg)
© LES/PUC-Rio
Composite
• Propósito
– Compõe objetos em árvores de agregação
• Relacionamento parte-todo
– Permite que objetos agregados sejam tratados como um único objeto
• Aplicabilidade
– Representar hierarquias partes-todo
– Manipulação das partes e do todo deve ser feita da mesma forma pelo cliente
![Page 81: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/81.jpg)
© LES/PUC-Rio
Composite
• Estrutura
![Page 82: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/82.jpg)
© LES/PUC-Rio
Composite
• Participantes– Component (Graphic)
• Declara interface para todos os objetos da hierarquia
• Pode implementar comportamento default
• Declara interface para acessar e gerenciar classes filhas
• Define uma interface para acessar o elemento pai
– Leaf (Line, Rectangle, Text)• Representa objetos folha na hierarquia
• Definem o comportamento de objetos primitivos
– Composite (Picture)• Define comportamento para componentes que possuem filho
• Armazena componentes filho
• Implementa operações relacionadas a filho
– Client• Manipula objetos da composição utilizando a interface oferecida
pelo Component
![Page 83: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/83.jpg)
© LES/PUC-Rio
Composite
• Conseqüências
– (+) Isola classes concretas
– (+) Permite a construção flexível de novas famílias de objeto
– (+) Promove consistência entre família de produtos
– (-) Suporte a novos tipos de produtos é dificultada
![Page 84: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/84.jpg)
© LES/PUC-Rio
Composite
![Page 85: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/85.jpg)
Trabalho de Padrões de Projeto
![Page 86: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/86.jpg)
© LES/PUC-Rio
Informações
• Cada padrão deve ser apresentado em uma sessão de 12 minutos. Estrutura da apresentação: – Propósito do Padrão
– Motivação (um exemplo de motivação de uso do padrão, que pode ser o do livro ou algum outro encontrado)
– Aplicabilidade
– Estrutura
– Participantes
– Colaborações
– Conseqüências
– Exemplo de Código (diferente do livro).
• A qualidade da apresentação dos padrões e o exemplo serão os critérios de avaliação.
• Horário
![Page 87: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/87.jpg)
Grupos
• Decorator• Adapter• Iterator• Factory Method – Albaney• Abstract Factory – Carolina• Builder – Felipe• Prototype – João• Interpreter – Manuele• Memento – Vitor Hugo• Chain of Responsibility - Albaney• Visitor - Carolina• Bridge - Felipe• Proxy – João• Mediator – Manuele• Flyweight – Vitor Hugo
![Page 88: Design Patterns Projeto de Sistemas de Software. © LES/PUC-Rio Sumário Reuso de Software –Introdução –Benefícios e Desvantagens –Visão do Reuso Padrões](https://reader035.vdocuments.site/reader035/viewer/2022070311/552fc105497959413d8c014d/html5/thumbnails/88.jpg)
Fim!!