Padrão de Projeto Iterator
Projeto de Sistemas de Software
Thiago Pinheiro de Araújo
Iterator
• Motivação
– Permitir uma iteração por todos os elementos de um agregado,
independente da estrutura de armazenamento.
– Fornecer uma forma de acesso genérica aos elementos de um
agregado sem expor sua representação interna.
– Fazer duas iterações concorrentes em um agregado, cuja
interface pode só permitir uma única por vez. Ex: Arvore
binária.
© LES/PUC-Rio
Iterator
• Propósito
– Padronizar a iteração sobre os elementos de agregados.
– Permitir modificações na estrutura interna do agregado sem
afetar quem faz uso dele apenas para iteração.
– Permitir a troca do tipo do agregado sem afetar quem faz uso
dele apenas para iteração.
© LES/PUC-Rio
Iterator
• Aplicabilidade
– Prover interface única de iteração sobre agregados.
– Onde existe ganho em usar um objeto, obtido através do
padrão de projeto Factory, responsável pela iteração sobre os
elementos do agregado.
© LES/PUC-Rio
Iterator
• Estrutura
© LES/PUC-Rio
Iterator
• Participantes
– IAgregate
• Interface que especifica a fábrica de iteradores.
– ConcreteAgregate
• Armazena os elementos efetivamente em uma estrutura de
interesse.
• Define o método de criação do seu iterador.
– Iterator
• Interface que define primitivas de controle sobre a iteração dos
elementos.
– ConcreteIterator
• Implementa as primitivas de controle sobre a iteração.
© LES/PUC-Rio
Iterator
• Colaborações
– O usuário do Agregado pede um iterator.
– O iterator mantém a posição corrente durante a iteração sobre
os elementos do agregado.
– Para cada passo na iteração, o usuário pode realizar operações
sobre o elemento.
© LES/PUC-Rio
Iterator
• Conseqüências
– Generalidade na iteração sobre os elementos de um agregado.
– Possibilidade de realizar múltiplas iterações concorrentes sobre
um agregado.
– Troca da implementação do agregado sem afetar quem faz
iteração sobre seus elementos.
© LES/PUC-Rio
Iterator
© LES/PUC-Rio
Iterator
• Bibliografia
– [1] Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides.
Design Patterns: Elements of Reusable Object-Oriented
Software, 2st edition, Addison-Wesley Professional Computing Series,
1998.
© LES/PUC-Rio
Fim!
Download

Iterator