Upload
aiko-stark
View
29
Download
1
Embed Size (px)
DESCRIPTION
Padrão de Projeto Composite. Leandro Alvim. Propósito do Padrão. Compor objetos em uma estrutura de árvore Representar hierarquias de parte-todo Tratar objetos e composições de objetos uniformemente Mascarar ao Cliente a manipulação desses objetos. Motivação - Exemplo. Um figura pode ser - PowerPoint PPT Presentation
Citation preview
Padrão de ProjetoComposite
Leandro Alvim
Propósito do Padrão• Compor objetos em uma estrutura de
árvore– Representar hierarquias de parte-todo
• Tratar objetos e composições de objetos uniformemente– Mascarar ao Cliente a manipulação
desses objetos
Motivação - Exemplo• Um figura pode ser
– Linha, retângulo ou texto (primitivas)• Uma figura conter
– Figura (composição de primitivas)• O Cliente quer apenas desenhar a figura
– Aspectos estruturais não são relevantes• O que é Linha ?
Motivação - Exemplo
• Uma figura é uma composição de uma figura com primitivas
Estrutura
Participantes• Component (nó)
– Define a interface para os objetos da composição
– Implementa o comportamento de uma interface comum para todas as composições e objetos dessas composições
– Define uma inetrface para manipulação e aesso para os componentes filhos
• Leaf (nó folha ou terminal)
– Define o comportamento do objeto primitivo
– Objeto folha de uma composição
• Não possui filhos
Participantes• Composite (nó não-
terminal)– Armazena
componentes filhos– Define um
comportamento comum para os objetos filhos
– Implementa operações da interface Component que estão relacionadas aos seus componentes filhos
• Client– Manipula objetos que estão
contidos em composições a partir da interface Component
Colaborações
Aplicabilidade• Quando se quer representar hierarquias
de parte-todo• Quando a distinção entre objetos e
composições de objetos é irrelevante ao Cliente– Cliente trata objetos e composições
uniformemente
Conseqüências• Vantagens
– Traz ao Cliente a simplicidade quanto a utilização de uma estrutura
• Tratamento semehante para primitivas e composições
– Facilidade quanto a adição de novos componentes
• Não há necessidade de reestruturação do Cliente• A adição de um novo componente não altera a
estrutura de outras classes da árvore
– Melhor organização dos objetos primitivos• Objetos complexos são obtidos a partir da
composição de objetos simples
Conseqüências• Desvantagem
– Quando o Cliente necessita de um conjunto restrito de componentes que encontram-se em uma composição• Solução: Utilizar uma verificação em
tempo de execução
Exemplo de códigoComponent
Leaf
Exemplo de códigoComposite
Exemplo de código
Fim