Você está na página 1de 22

DESIGN PATTERNS

Adapter e Decorator

Eduardo Lira, werton Arajo, Murilo Vasconcelos e Paulo Costa


ADAPTER

2
ADAPTER

Motivao

Algumas vezes desejamos reutilizar classes ou mesmo


bibliotecas porm sua interface incompatvel com a interface
esperada pelo sistema que est sendo desenvolvido

Pode ser que no tenhamos os fontes da biblioteca para realizar


alteraes ou desejvel que no tenhamos que modificar o
seu cdigo para cada aplicao construda

3
ADAPTER

Objetivos

Converter a interface de classes no intuito de torn-las


compatveis com a arquitetura do sistema que est sendo
desenvolvido

Reutilizar
classes existentes ou componentes antigos em
novos sistemas ou em componentes de outras verses

4
ADAPTER
O padro Adapter consiste em criar uma camada intermediria
que traduz ou mapeia componentes antigos ou que no esto
conforme a arquitetura do sistema para componentes que
oferecem interfaces necessria pelo sistema

A classe cliente chama mtodos no objeto Adapter que as


redireciona para o componente legado

Pode ser implementado tanto com agregao como por herana


5
ADAPTER

Object Adapter

6
ADAPTER

Class Adapter

7
ADAPTER

Classe legada

8
ADAPTER

Interface utilizada pelo sistema e o Adapter

9
ADAPTER

Classe cliente

10
DECORATOR

11
DECORATOR

Motivao

Frequentemente necessrio adicionar comportamentos a


objetos em tempo de execuo

Heranano possvel pois esttica e aplica a toda a classe e


no s ao objeto

Osnovos comportamentos s afetam um objeto da classe e


no todos os objetos de uma classe

12
DECORATOR

Decorator um padro de projeto estrutural

O seu objetivo designar dinamicamente responsabilidades


adicionais a um objeto

Projetado
de forma que mltiplos 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
DECORATOR

Estrutura:

14
DECORATOR

Exemplo:

Uma cafeteria que oferece vrias composies 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
DECORATOR

Herana:

16
DECORATOR

Herana:

Claramente invivel

16
DECORATOR

Soluo:

17
DECORATOR

Funcionamento:

O mesmo de uma classe DarkRoastWithMochaAndWhip


18
ADAPTER E DECORATOR

So padres de projeto estruturais

O padro Adapter altera a interface de uma classe afim de


torn-la compatvel com a arquitetura do sistema

O padro Decorator no altera a interface das classes, apenas


adiciona responsabilidades (comportamentos) em tempo de
execuo

O padro Decorator mais transparente, com isso, suporta


composio mltipla, o que no possvel no Adapter
19
ADAPTER E DECORATOR

Apresentam a mesma desvantagem:

Performance

No caso do Adapter, preciso adicionar uma classe que faz


o intermdio das chamadas

Jno Decorator, alm de cada classe de decorao precisar


ter uma referncia do objeto concreto, cada chamada
recursivamente feita atravs dos decoradores at chegar
no objeto concreto
20
ADAPTER E DECORATOR

Dvidas?

21

Você também pode gostar