Decorator

Introdução

Inclusão transparente

A classe MonoElementoDeDocumento

public class Borda extends MonoElementoDeDocumento {
    ...
    public void draw(Component c) {
        super.draw(c);
        drawBorda(c);
    }
    ...
}

O padrão Decorator

Objetivo

Também chamado de

Quando usar o padrão Decorator?

Estrutura genérica

Participantes

Colaborações entre objetos

Consequências do uso do padrão Decorator

Considerações de implementação

Decorator versus Strategy

Exemplo de código na API Java

import java.awt.*;
import java.applet.*;

public class Scroll extends Applet {
    public void init() {
        ScrollPane spane = new ScrollPane();
        Button botaoGrande1 =
            new Button("Eu adoro Metodos Avançados de Programação!");
        botaoGrande1.setFont(new Font("Serif", Font.ITALIC, 80));
        Button botaoGrande2 =
            new Button("Eu adoro Metodos Avançados de Programação!");
        botaoGrande2.setFont(new Font("Serif", Font.ITALIC, 80));
        spane.add(botaoGrande1);
        add(botaoGrande2);    // sem scroll bars
        add(spane);           // com scroll bars
    }
}

Pergunta final para discussão

pat-7 programa anterior próxima