Другое название: Cursor (Курсор).

Назначение: предоставляет способ последовательного доступа ко всем элементам составного объекта, не раскрывая его внутреннего устройства.

Общая структура решения.

 

 

Iterator – итератор: определяет интерфейс для доступа и обхода элементов.

ConcreteIterator – конкретный итератор: реализует интерфейс Iterator; следит за текущей позицией при обходе агрегата.

Aggregate – агрегат: определяет интерфейс для создания объекта-итератора.

ConcreteAggregate – конкретный агрегат: реализует интерфейс создания итератора и возвращает экземпляр подходящего класса ConcreteIterator.

Item – элемент: интерфейс внутренних объектов агрегата (требуется, если на уровне Iterator объявлена операция CurrentItem).

ConcreteIterator отслеживает текущий объект в агрегате и может определить следующий элемент, а также завершение обхода (IsDone).