Transcript
Page 1: Padrão de Projeto Composite

Padrão de ProjetoComposite

Leandro Alvim

Page 2: Padrão de Projeto Composite

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

Page 3: Padrão de Projeto Composite

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 ?

Page 4: Padrão de Projeto Composite

Motivação - Exemplo

• Uma figura é uma composição de uma figura com primitivas

Page 5: Padrão de Projeto Composite

Estrutura

Page 6: Padrão de Projeto Composite

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

Page 7: Padrão de Projeto Composite

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

Page 8: Padrão de Projeto Composite

Colaborações

Page 9: Padrão de Projeto Composite

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

Page 10: Padrão de Projeto Composite

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

Page 11: Padrão de Projeto Composite

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

Page 12: Padrão de Projeto Composite

Exemplo de códigoComponent

Leaf

Page 13: Padrão de Projeto Composite

Exemplo de códigoComposite

Page 14: Padrão de Projeto Composite

Exemplo de código

Page 15: Padrão de Projeto Composite

Fim

[email protected]


Recommended