BEHAVIORAL

Iterator

Fornire un modo per accedere sequenzialmente agli elementi di un oggetto aggregato senza esporre la sua rappresentazione sottostante.

Il Problema

Quando vuoi attraversare una collezione senza esporre la sua struttura interna.

La Soluzione

Creare oggetto Iterator che incapsula la logica di attraversamento. La collezione fornisce metodo per ottenere l'iterator.

Struttura

Iterator interface con hasNext() e next(). ConcreteIterator implementa attraversamento. Aggregate fornisce createIterator().

Partecipanti:
Iterator - interfaccia per accedere e attraversare elementi
ConcreteIterator - implementa Iterator e tiene traccia della posizione
Aggregate - interfaccia per creare Iterator
ConcreteAggregate - implementa createIterator() che ritorna ConcreteIterator
Esempi di Codice

Iterator per Book Collection

Iteratore personalizzato per attraversare collezione di libri.

JAVASCRIPT
Loading...
Esempi nel Mondo Reale
JavaScript Array.prototype[Symbol.iterator]
Java Iterator interface
Database result sets
File system directory traversal
Tree/Graph traversal algorithms
Quando Usarlo
Quando vuoi accedere a contenuti senza esporre rappresentazione interna
Quando serve supporto per multiple traversal della stessa struttura
Quando vuoi interfaccia uniforme per attraversare strutture diverse
Quando vuoi separare logica di traversal dalla collezione
Quando NON Usarlo
Quando hai accesso diretto semplice agli elementi
Quando le collezioni sono sempre piccole
Quando JavaScript built-in iterators sono sufficienti