Buscar

Padrões de Projetos - Decorator

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

*
Unipar - Universidade Parananes - Prof. Jemerson Fernando Maia - Padrões de Proejtos
*
Decorator
(Decorador)
Estrutural / Objeto e Classe
UNIPAR – Universidade Paranaense 
Padrões de Projetos e Frameworks
Prof. Jemerson Fernando Maia
Toledo - Pr - 08/2014
Unipar - Universidade Parananes - Prof. Jemerson Fernando Maia - Padrões de Proejtos
*
Unipar - Universidade Parananes - Prof. Jemerson Fernando Maia - Padrões de Proejtos
*
Descrição
Intenção:
Anexar funcionalidades adicionais a um objeto dinamicamente. Provê uma alternativa flexível à herança como mecanismo de extensão.
Também conhecido como:
Wrapper.
*
*
Unipar - Universidade Parananes - Prof. Jemerson Fernando Maia - Padrões de Proejtos
*
O Problema
*
Adicionar funcionalidade por herança é
inflexível e prolifera classes
*
Unipar - Universidade Parananes - Prof. Jemerson Fernando Maia - Padrões de Proejtos
*
A Solução
*
Componentes adicionados por cima de outros, 
decorando-os.
*
Unipar - Universidade Parananes - Prof. Jemerson Fernando Maia - Padrões de Proejtos
*
A Solução
*
*
Unipar - Universidade Parananes - Prof. Jemerson Fernando Maia - Padrões de Proejtos
*
A Estrutura
*
*
Unipar - Universidade Parananes - Prof. Jemerson Fernando Maia - Padrões de Proejtos
*
A Analogia
*
*
Unipar - Universidade Parananes - Prof. Jemerson Fernando Maia - Padrões de Proejtos
*
Quando usar este padrão
quiser adicionar funcionalidade dinamicamente e transparentemente;
quiser adicionar funcionalidade que pode depois ser desativada;
extensão por herança é impraticável (não disponível ou produziria uma explosão de subclasses).
*
*
Unipar - Universidade Parananes - Prof. Jemerson Fernando Maia - Padrões de Proejtos
*
Vantagens
Mais flexibilidade do que herança:
Podem ser adicionadas/removidas em tempo de execução;
Pode adicionar duas vezes a mesma funcionalidade.
*
*
Unipar - Universidade Parananes - Prof. Jemerson Fernando Maia - Padrões de Proejtos
*
... e desvantagens
O decorador é diferente do componente:
A identidade do objeto não pode ser usada de forma confiável.
Muitos objetos pequenos:
Um projeto que utiliza Decorator pode vir a ter muitos objetos pequenos e parecidos.
*
*
Unipar - Universidade Parananes - Prof. Jemerson Fernando Maia - Padrões de Proejtos
*
Exemplos em Java
Os streams do Java I/O usam:
*
*
Unipar - Universidade Parananes - Prof. Jemerson Fernando Maia - Padrões de Proejtos
*
Interceptadores (Interceptors)
Idéia semelhante aos decoradores;
Interceptam uma requisição e podem executar código antes e/ou depois.
*

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais