Escolar Documentos
Profissional Documentos
Cultura Documentos
Decorator
Decorator
Sumrio
Decorator
Introduo/Propsito Motivao Aplicabilidade Estrutura Participantes Colaboraes Conseqncias Exemplo de Cdigo
LES/PUC-Rio
Introduo/Propsito
um padro estrutural
Classificao GoF Compor estruturas complexas
Dinamicamente, agregar responsabilidades adicionais a um objeto Fornecem uma alternativa flexvel ao uso de subclasses para extenso de funcionalidades
LES/PUC-Rio
Motivao (1/3)
Acrescentar responsabilidades a objetos individuais e no a toda uma classe Exemplo: Ferramenta para construo de interfaces grficas de usurio
Duas formas:
Herana
Escolha de propriedades e bordas estaticamente Exploso de classes
Decorator
Embutir o componente em outro objeto que acrescenta a borda
LES/PUC-Rio
Motivao (2/3)
VisualComponent Draw()
TextView Draw()
Decorator Draw()
component component->Draw()
LES/PUC-Rio
Motivao (3/3)
Diagrama de objetos
aBorderDecorator component aScrollDecorator component
aTextView
LES/PUC-Rio
Aplicabilidade
Para acrescentar responsabilidades a objetos individuais
De forma dinmica e transparente
Para responsabilidades que podem ser removidas Quando a extenso atravs do uso de subclasses no prtica
LES/PUC-Rio
Estrutura
Component Operation()
ConcreteComponent Operation()
Decorator Operation()
component
component->Operation()
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 atribudas
Decorator
Mantm uma referncia para um objeto Component e define uma interface que segue a interface de Component
Colaboraes
Decorator repassa solicitaes para o seu objeto Component. Subclasses do Decorator podem extender as solicitaes passadas para seu objeto Component. Opcionalmente, subclasses do Decorator podem executar operaes adicionais antes e depois de repassar a solicitao.
LES/PUC-Rio
Colaboraes
LES/PUC-Rio
Conseqncias
Vantagens
Maior flexibilidade do que a herana esttica Evita classes sobrecarregadas de caractersticas na parte superior da hierarquia
Desvantagens
Um decorator e o seu componente no so idnticos Grande quantidade de pequenos objetos
LES/PUC-Rio
Exemplo de cdigo
Estrutura
LES/PUC-Rio
LES/PUC-Rio
Concrete Components
LES/PUC-Rio
Concrete Decorator
LES/PUC-Rio
LES/PUC-Rio
Obrigada!