Escolar Documentos
Profissional Documentos
Cultura Documentos
Design Patterns
Estruturais
Composite:
Tratar grupos e indivduos diferentes atravs de uma nica interface
Segunda Modelagem Modelagem
Composite:
Tratar grupos e indivduos diferentes atravs de uma nica interface
No suportado pelo tipo arquivo
Exemplo
Como definir estratgias de estabelecimento
de preo compostas
Composite (conseqncias)
Objetos complexos podem ser compostos de objetos mais
simples recursivamente.
Permite forma assim uma hierarquia de objetos
O cliente pode tratar objetos parte e objetos todo da
mesma forma.
Isso resulta na simplificao deste cliente.
Os clientes normalmente no sabem (e nem devem se
preocupar) se eles esto tratando um componente individual
ou composto.
Facilita a adio de novos componentes: o cliente no tem
que mudar com a adio de novos objetos
Sejam eles simples ou compostos
Composite (conseqncias)
O projeto pode ficar geral demais, o que torna mais difcil
restringir os possveis componentes de um objeto composto.
Por exemplo, em uma hierarquia que contenha documentos e
suas partes (sees, pargrafos, etc.), podemos compor sees
com documentos, etc. o que no faz sentido
Composite (aplicabilidade)
Quando necessrio representar hierarquias do tipo todo-
parte.
Quando necessrio tratar todo e respectivas partes de
forma indistinta.
GOF - Faade
Motivao
Algumas vezes se quer adicionar responsabilidades a um objeto, mas
no sua classe. Acontece, por exemplo, com criao de interfaces
grficas, quando se deseja acrescentar uma borda a um componente
qualquer ou um scrollbar a uma rea de texto
Uma forma de se acrescentar responsabilidades atravs de herana,
mas isto torna o projeto inflexvel, pois a escolha da borda definida
em tempo de compilao. Neste caso o cliente no pode controlar
como e onde decorar o componente com uma borda.
Uma abordagem mais flexvel inserir o componente em outro objeto
que adiciona a borda, um Decorator
Estrutura do Padro - Decorator
Componente Define a interface para objetos que podem ter responsabilidades acrescentadas
aos mesmos dinamicamente
Estrutura do Padro - Decorator
Decorador mantm uma referncia para um objeto Componente e define uma interface que
segue a interface de Componente
Estrutura do Padro - Decorator
aTextView aBorderDecorator
aScrollDecorator
aBorderDecorator
aScrollDecorator
component aTextView
component
Componente
Exemplo
VisualComponent
Draw()
Decorator
TextView Decorator
Draw() Draw() component Draw()
ComponenteConcreto
ScrollDecorator BorderDecorator
scrollPosition borderWidth
ComponenteConcretoA ComponenteConcretoB
Exemplo
Aplicabilidade
Para adicionar responsabilidades a objetos individuais
de forma dinmica e transparente, sem afetar outros
objetos
Para responsabilidades que podem ser removidas
Quando extenso atravs de herana impraticvel.
Algumas vezes uma grande quantidade de extenses
independentes so possveis e seria necessrio um imenso
nmero de subclasses para suportar cada combinao
possvel entre elas.
Quando uma definio de classe pode estar escondida
ou no disponvel para herdar.
Conseqncias
Mais flexibilidade que herana
Evita incorporao forada de comportamentos
desnecessrios
Um decorador e seu componente no so idnticos!
Uma poro de objetos pequenos
Bridge
Abstraction define a interface da abstrao. Mantm uma referncia para um objeto do tipo
Implementor
Bridge (estrutura)
WindowsLookAndFeel DefaultLookAndFeel
Bridge (exemplo)
Exemplo: usando o padro Bridge para abstrair o driver
especfico de banco de dados.
Proxy
Proxy
Proxy
UnsharedConcreteFlyweight UnsharedConcreteFlyweight
ConcreteFlywieght
105