Design Patterns - Adapter e Decorator

3,338 views

Published on

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.

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
3,338
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
93
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • Falar algo!\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Falar algo!\n
  • Falar algo!\n
  • Falar algo!\n
  • Falar algo!\n
  • Falar algo!\n
  • Falar algo!\n
  • Falar algo!\n
  • Falar algo!\n
  • Falar algo!\n
  • Falar algo!\n
  • Falar algo!\n
  • 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

    ×