Upload
internet
View
105
Download
0
Embed Size (px)
Citation preview
Composite
Carlos Roberto Marques Junior
Propósito do Padrão
Estruturar objetos em forma de árvore para representar hierarquias de parte-todo.
Permitir o tratamento uniforme de objetos individuais e composições de objetos
É chamado composição recursiva.
Motivação
Um sistema de criação e manipulação de figuras geométrias, figuras e texto, como editores de desenhos.
Domínio: Linhas, Retângulos, Círculos, Texto e composição dos anteriores.
Motivação
Implementação Simples:– Definir classes para primitivas básicas;– Definir outras classe containers.
Motivação
Padrão Composite
Motivação
Aplicabilidade
Representação de hierarquias parte-todo de objetos;
Capacidade dos clientes de abstrair a diferença entre composições de objetos e objetos individuais.– Tratamento uniforme para objetos da estrutura.
Estrutura
Estrutura
Participantes
Component– Declara a interface para os objetos na
composição;– Implementa comportamento-padrão para a
interface comum a todas as classes;– Declara uma interface para acessar e gerenciar
os seus componentes-filhos.
Participantes
Leaf– Representa objetos-folha na composição;
Um objeto folha não pode ter filhos.
– Define comportamento para objetos primitivos na composição.
Participantes
Composite– Define comportamento para componentes que
têm filhos;– Armazena os componentes-filhos;– Implementa as operações relacionadas com os
filhos presentes na interface de Component.
Participantes
Client– Manipula objetos na composição através da
interface Component.
Colaboração
Os clientes lidam com a interface da classe Component para interagir com os objetos da estrutura.
Se o objeto referenciado pelo Component é uma Leaf, então a solicitação é tratada diretamente.
Se o objeto for um Composite, ele repassa as solicitações para os seus componentes-filhos.
Consequências
Torna o cliente simples– Cliente lida com objetos compostos assim como
lida com os primitivos;
Exemplos
Exemplos
Exemplos
Exemplos
Exemplos
Dúvidas