A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Padrão Decorator Projeto de Sistemas de Software Hazel, Juliana e Luana.

Apresentações semelhantes


Apresentação em tema: "Padrão Decorator Projeto de Sistemas de Software Hazel, Juliana e Luana."— Transcrição da apresentação:

1 Padrão Decorator Projeto de Sistemas de Software Hazel, Juliana e Luana

2 © LES/PUC-Rio Sumário Decorator –Introdução/Propósito –Motivação –Aplicabilidade –Estrutura –Participantes –Colaborações –Conseqüências –Exemplo de Código

3 © LES/PUC-Rio Introdução/Propósito É um padrão estrutural –Classificação GoF –Compor estruturas complexas Dinamicamente, agregar responsabilidades adicionais a um objeto Fornecem uma alternativa flexível ao uso de subclasses para extensão de funcionalidades

4 © LES/PUC-Rio Motivação (1/3) Acrescentar responsabilidades a objetos individuais e não a toda uma classe Exemplo: Ferramenta para construção de interfaces gráficas de usuário Duas formas: –Herança Escolha de propriedades e bordas estaticamente Explosão de classes –Decorator Embutir o componente em outro objeto que acrescenta a borda

5 © LES/PUC-Rio Motivação (2/3) TextView Draw() ScrollDecorator Draw() ScrollTo() scrollPosition VisualComponent Draw() Decorator Draw() BorderDecorator Draw() DrawBorder() borderWidth component component->Draw() Decorator::Draw(); DrawBorder();

6 © LES/PUC-Rio Motivação (3/3) aBorderDecorator component aScrollDecorator component aTextView Diagrama de objetos

7 © LES/PUC-Rio Aplicabilidade Para acrescentar responsabilidades a objetos individuais –De forma dinâmica e transparente Para responsabilidades que podem ser removidas Quando a extensão através do uso de subclasses não é prática

8 © LES/PUC-Rio Estrutura ConcreteDecoratorB Operation() AddedBehavior() ConcreteDecoratorA Operation() addedState Component Operation() Decorator Operation() Decorator Operation() ConcreteComponent Operation() component->Operation()Decorator::Operation(); AddedBehavior(); component

9 © LES/PUC-Rio Participantes Component (VisualComponent) –Define a interface para objetos que podem ter responsabilidades acrescentadas aos mesmos dinamicamente ConcreteComponent (TextView) –Define um objeto para o qual responsabilidades adicionais podem ser atribuídas Decorator –Mantém uma referência para um objeto Component e define uma interface que segue a interface de Component ConcreteDecorator (BorderDecorator, ScrollDecorator) –Acrescenta responsabilidades ao componente

10 © LES/PUC-Rio Colaborações Decorator repassa solicitações para o seu objeto Component. Subclasses do Decorator podem extender as solicitações passadas para seu objeto Component. Opcionalmente, subclasses do Decorator podem executar operações adicionais antes e depois de repassar a solicitação.

11 © LES/PUC-Rio Colaborações

12 © LES/PUC-Rio Conseqüências Vantagens –Maior flexibilidade do que a herança estática –Evita classes sobrecarregadas de características na parte superior da hierarquia Desvantagens –Um decorator e o seu componente não são idênticos –Grande quantidade de pequenos objetos

13 Exemplo de código

14 © LES/PUC-Rio Estrutura

15 © LES/PUC-Rio Abstract Component e Abstract Decorator

16 © LES/PUC-Rio Concrete Components

17 © LES/PUC-Rio Concrete Decorator

18 © LES/PUC-Rio Testando o Decorator Pattern

19 Obrigada!


Carregar ppt "Padrão Decorator Projeto de Sistemas de Software Hazel, Juliana e Luana."

Apresentações semelhantes


Anúncios Google