Padrão Composite
 Definição
 Compõe
objetos em estrutura de árvore
para representar hierarquias do tipo todoparte. Este padrão permite que as classes
cliente tratem os objetos individuais e as
composições de maneira uniforme.
1
Intenção
 Compor
objetos em estruturas de árvore
para representarem hierarquias partes-todo.
Permite aos clientes tratarem de maneira
uniforme objetos individuais e composição
de objetos.
2
Aplicabilidade
 Você
pode representar hierarquias partestodo de objetos;
 Você pode fazer com que os clientes sejam
capazes de ignorar a diferença entre
composição de objetos e objetos
individuais. Os clientes tratarão todos os
objetos na estrutura composta de maneira
uniforme.
3
Implementação
 Referências
explícitas aos pais;
 Compartilhamento de componentes;
 Maximização da interface de componentes;
 Declaração as operações de gerência de
filhos.
4
Participantes I
 Exemplo Estrutural: Component (componente)
 Exemplo Concreto: DrawingElement
 Declara
a interface para objetos da composição.
 Implementa, conforme apropriado, comportamento
padrão que seja comum a todas as classes.
 Declara uma interface para acessar e gerenciar os
seus elementos filhos.
 (opcional) Define uma interface para acessar o pai
de um componente na estrutura recursiva,
implementando-a se for necessário.
5
Participantes II
 Exemplo Estrutural: Leaf (Folha)
 Exemplo Concreto: PrimitiveElement
 Representa
objetos folha na composição, que são
aqueles que não possui filhos.
 Define comportamenteo para objetos primitivos da
composição.
6
Participantes III
 Exemplo estrutural: Composite (composto)
 Exemplo concreto: CompositeElement
 Define
o comportamento para componentes que
possuem filhos.
 Armazena componentes filhos.
 Implementa as operações relacionadas aos filhos
que foram definidas na interface de Component.
7
Participantes IV
 Exemplo estrutural: Client (cliente)
 Exemplo concreto: Aplicação
 Manipula
objetos da composição através da
interface Component.
8
Exemplo Estrutural
 O código estrutural apresenta o padrão
composite que permite a criação de uma
estrutura de árvore onde cada nó individual
é acessado uniformemente sejam eles nó
folha ou desvio (branch/compostos).
9
10
Exemplo Concreto
 Este exemplo a utilização do padrão
composite para construir uma estrutura de
árvore gráfica composta de nós primitivos
(linhas, círculos, etc) e nós compostos
(grupos de elementos de desenho que
formam elementos mais complexos).
11
12
Consequências
 Define
hierarquias de classes que
consistem de objetos primitivos e objetos
compostos;
 Torna o cliente simples;
 Torna mais fácil de acrescentar novas
espécies de componentes;
 Pode tornar o projeto excessivamente
genérico.
13
Padrões Relacionados
 Freqüentemente, a ligação componente-pai é usada para o
padrão Chain of Responsibity.
 O padrão Decorator é freqüentemente usado com o padrão
Composite. Quando decoradores e compostos são usados
juntos, eles têm nornalmente uma classe-mãe comum. Assim,
decoradores terão que suportar a interface de componente.
 O Flyweight permite compartilhar componentes, porém este
não mais podem referenciar seus pais.
 O padrão Iterator pode ser usado para percorrer os
compostos.
 o padrão Visitor pode ser usado para localizar operações e
comportamentos que seriam de outra forma distribuídos entre
classes.
14
Download

PadraoComposite