Decorator Design Pattern

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    1 Favorite

    Decorator Design Pattern - Presentation Transcript

    1. Rafael Rocha Cavalcanti blog: faelcavalcanti.wordpress.com e-mail: faelcavalcanti@gmail.com Decorator Pattern Estrutural (GoF) :: Extensão (Metsker) “Anexar responsabilidades adicionais a um objeto dinamicamente. Decorators oferecem uma alternativa flexível ao uso de herança para estender uma funcionalidade." [GoF : Págs:170-179]
    2. Decorator :> Cenário 1 • Necessitamos criar uma cadeia de objetos, em que estes sejam responsáveis por novas funcionalidades • A partir daí podemos encadear as funções na ordem desejada Y Z X L E I K D H J C B G A
    3. Decorator :> Cenário 2 • De uma forma análoga ao nosso enfoque, temos que: • Objetivo é separar construção dessa cadeia do cliente que a usa • Encadeamento é efetuado na ordem correta necessária ao invés de controles • Esta cadeia sempre inicia c/componente e finaliza c/componente concreto Componente Componente Decorator Decorator Y J L L K J Componente Componente Decorator Concreto Executar Ações K Y Resultado = J + K + L + Y
    4. Decorator :> Estudo de Caso(CyberCafé) • Requisitos :: Sistema CyberCafé 1. Em uma determinada “CyberCafé” deseja-se determinar o custo de cafés com ingredientes adicionais, como leite, canela, etc. 2. Sabendo que cada café tem seu preço individual, como efetuar o cálculo deste custo, somando-se a cada ingrediente adicional ? 3. Segue abaixo modelo sugerido de design
    5. Decorator :> Apresentação • Padrão também chamado de Wrapper • Utilizar quando a herança geraria uma explosão de subclasses • Classe Decorator é preferivelmente abstrata e possui um Componente • Cada [ConcreteDecorator] executa sua operação e chama operação da classe [Decorador], que por sua vez chama da classe [Componente] Classificação = Estrutural (GoF) e de Extensão (Metsker)
    6. Decorator :> Estudo de Caso(CyberCafé) o Solução final após aplicação do padrão! Vamos executar o projeto! Este é um exemplo da série Head First Design Pattern
    7. Decorator :> Exercício :: 10 Minutos • Vamos revisar aprendendo como usar uma implementação deste 1. Abra o arquivo [decorator.example.MainJavaIO] e execute-o 2. Refatore cada forma de leitura para um método separado 3. Que tipo de implementações este possui ? 4. Adicione nova implementação que exibe os números em binário • Seguindo mesma abordagem acima, vamos ler, converter e salvar! 1. Implemente um novo algoritmo que consiga ler uma linha inteira  Dica: Utilize BufferReader 2. Agora obtenha o resultado acima e salve-o em um arquivo  Dica 1: Utilize a variável (HelperFile .path + NomeQualquer)  Dica 2: Utilize o encadeamento: PrintWriter - BufferedWriter - FileWriter
    8. Decorator :> Exercício :: 10 Minutos • Agora que já sabemos como utilizar o padrão decorator, vamos implementar um gerador de código HTML com proposta abaixo: • Observãções: 1. Crie uma classe Cliente 2. Nas subclasses de componente faça a implementação do método getHTML() seguir as recomendações da W3C 3. Obtenha conteúdo html e passe para método Cliente.gerarHTML()
    9. Decorator :> Revisando • Vantagens • Possibilita qualquer número de combinações de comportamento • Capacidade dinâmica de adicionar funções antes ou depois da funcionalidade da classe ComponenteConcreto • Permite alternativa flexível à herança para estender funcionalidade • Adiciona responsabilidades a um objeto e não uma classe inteira • Desvantagens • O Decorador e o objeto incluso não têm a mesma identidade, isto é, a verificação do método equals tende a ser sempre diferente • Fácil de customizar mas pode ser difícil entender e depurar • Em casos que a classe [Componente] encontra-se muito pesada, este passa a ser recomendável utilizar o padrão Strategy
    10. Decorator :> Anexo I :: Pacote java.io

    + faelcavalcantifaelcavalcanti, 4 weeks ago

    custom

    178 views, 1 favs, 2 embeds more stats

    Segue uma versão do padrão decorator a ser aprese more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 178
      • 124 on SlideShare
      • 54 from embeds
    • Comments 0
    • Favorites 1
    • Downloads 0
    Most viewed embeds
    • 50 views on http://faelcavalcanti.wordpress.com
    • 4 views on http://infoblogs.com.br

    more

    All embeds
    • 50 views on http://faelcavalcanti.wordpress.com
    • 4 views on http://infoblogs.com.br

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories