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.
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. 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. 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
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. 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
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
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. 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