Iterator

Řeší problém, jak se pohybovat mezi prvky, které jsou sekvenčně uspořádány, bez znalosti implementace jednotlivých prvků posloupnosti.

Iterator je jeden z nejjednodušších, ale nejvíce používaných návrhových vzorů. Vysvětluje možnost způsob sekvenční pohybu v seznamu objektů. Pro tento pohyb není nutné znát detailní implementaci dat v seznamu, jelikož jeho průchod není zajišťován přímo tímto seznamem.

Iterator je rozhraní, které definuje metody pro průchod seznamem. Mezi metody může patřit přechod na první záznam, na další záznam v sekvenci, kontrola, jestli existuje další záznam nebo předání odkazu na aktivní záznam. Protože toto rozhraní definujeme sami, je možné použít i více sofistikované metody. Rozhraní Iterator je implementováno třídou Concrete Iterator, která zajišťuje průchodnost kolekcí. Při vytváření Concrete Iterator je mu předán odkaz na seznam, v němž bude zajišťovat průchodnost. Rozhraní Aggregate je implementováno třídou Concrete Aggregate, která je seznam a v návrhovém vzoru představuje nositele dat. Client vytváří tento seznam a naplní ho daty. Potom požádá o vytvoření objektu Concrete Iterator, který mu umožní procházet seznam a získávat jednotlivé položky.

Implicitní iterátory jsou často označovány jako "foreach" a tento styl procházení elementů se také někdy nazývá "vnitřní iterace". Takto vypadá implicitní iterace v programovacím jazyce Python:

for value in iterable:
    print value