O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Design Patterns - Adapter e Decorator

3.376 visualizações

Publicada em

Slides sobre os padrões de projeto Adapter e Decorator com exemplos em C++ apresentados a turma de Projeto de Software do curso de Ciência da Computação da Universidade Federal de Goiás.

  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Design Patterns - Adapter e Decorator

  1. 1. DESIGN PATTERNS Adapter e Decorator Eduardo Lira, Éwerton Araújo, Murilo Vasconcelos e Paulo Costa
  2. 2. ADAPTER 2
  3. 3. ADAPTER• Motivação • Algumas vezes desejamos reutilizar classes ou mesmo bibliotecas porém sua interface é incompatível com a interface esperada pelo sistema que está sendo desenvolvido • Pode ser que não tenhamos os fontes da biblioteca para realizar alterações ou é desejável que não tenhamos que modificar o seu código para cada aplicação construída 3
  4. 4. ADAPTER• Objetivos • Converter a interface de classes no intuito de torná-las compatíveis com a arquitetura do sistema que está sendo desenvolvido • Reutilizar classes existentes ou componentes antigos em novos sistemas ou em componentes de outras versões 4
  5. 5. ADAPTER•O padrão Adapter consiste em criar uma camada intermediária que traduz ou mapeia componentes antigos ou que não estão conforme a arquitetura do sistema para componentes que oferecem interfaces necessária pelo sistema•A classe cliente chama métodos no objeto Adapter que as redireciona para o componente legado• Pode ser implementado tanto com agregação como por herança 5
  6. 6. ADAPTER• Object Adapter 6
  7. 7. ADAPTER• Class Adapter 7
  8. 8. ADAPTER• Classe legada 8
  9. 9. ADAPTER• Interface utilizada pelo sistema e o Adapter 9
  10. 10. ADAPTER• Classe cliente 10
  11. 11. DECORATOR 11
  12. 12. DECORATOR• Motivação • Frequentementeé necessário adicionar comportamentos a objetos em tempo de execução • Herançanão é possível pois é estática e aplica a toda a classe e não só ao objeto • Osnovos comportamentos só afetam um objeto da classe e não todos os objetos de uma classe 12
  13. 13. DECORATOR• Decorator é um padrão de projeto estrutural•O seu objetivo é designar dinamicamente responsabilidades adicionais a um objeto• Projetado de forma que múltiplos decoradores podem ser empilhados, cada um adicionando novas responsabilidades• Evita que para cada responsabilidade nova, uma subclasse seja criada, o que resultaria em uma grande hierarquia de classes 13
  14. 14. DECORATOR• Estrutura: 14
  15. 15. DECORATOR• Exemplo: • Uma cafeteria que oferece várias composições de cafezinho diferentes • Expresso, expressocom leite, expresso com caramelo, expresso com leite e caramelo, expresso com mocha, expresso com mocha e caramelo, dark roast, dark roast com leite, dark roast com leite e caramelo, .... 15
  16. 16. DECORATOR• Herança: 16
  17. 17. DECORATOR• Herança: Claramente inviável 16
  18. 18. DECORATOR• Solução: 17
  19. 19. DECORATOR• Funcionamento:•O mesmo de uma classe DarkRoastWithMochaAndWhip 18
  20. 20. ADAPTER E DECORATOR• São padrões de projeto estruturais•O padrão Adapter altera a interface de uma classe afim de torná-la compatível com a arquitetura do sistema•O padrão Decorator não altera a interface das classes, apenas adiciona responsabilidades (comportamentos) em tempo de execução•O padrão Decorator é mais transparente, com isso, suporta composição múltipla, o que não é possível no Adapter 19
  21. 21. ADAPTER E DECORATOR• Apresentam a mesma desvantagem: • Performance • No caso do Adapter, é preciso adicionar uma classe que faz o intermédio das chamadas • Jáno Decorator, além de cada classe de decoração precisar ter uma referência do objeto concreto, cada chamada é recursivamente feita através dos decoradores até chegar no objeto concreto 20
  22. 22. ADAPTER E DECORATOR Dúvidas? 21

×