Padrões de projeto decorator
2.MOTIVAÇÃO Esse padrão é usado quando queremos acionar novas responsabilidades a objetos individuais e não a toda classe. É uma ferramenta para construção de interfaces gráficas de usuário, deve permitir a adição de propriedades à interface gráfica, como adição de bordas, e adição de comportamentos, como rolamento, para qualquer componente da interface do usuário. Uma forma de se adicionar responsabilidades é a herança. Para se adicionar uma borda, por exemplo, fazer aquela borda herdar de uma outra classe. Herdar uma borda de uma outra classe coloca uma borda em volta de todas as instâncias de uma subclasse. mesmo assim, isto é inflexível, porque a escolha da borda é feita estaticamente. O problema de ser estático é que não é possível adicionar comportamentos e propriedades dinamicamente, ou seja, um cliente não pode controlar como e quanto decorar o componente de uma borda. Uma abordagem mais flexível é introduzir o componente em outro objeto que acrescenta a borda. O objeto que embute o primeiro é chamado decorator. como mostra a figura: [pic] Figura 1: Padrões de projeto, Soluções reutilizáveis de software orientado a objeto. Fonte: (GAMMA, ERICH, 2000, p.171)
[pic]
Figura 2: Padrões de projeto, Soluções reutilizáveis de software orientado a objeto. Fonte: (GAMMA, ERICH, 2000, p.171)
1. VisualComponent é uma classe abstrata para objetos visuais. Ela define suas interfaces de desenho e de tratamento de eventos. Observe como a classe Decorator simplesmente repassa as solicitações de desenho para o seu componente e como as subclasses de Decorator podem estender esta operação. 2. As classes ScrollDecorator e BorderDecorator são subclasses