Baixe o app para aproveitar ainda mais
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. *
Compartilhar