Другое название: Cursor (Курсор).
Назначение: предоставляет способ последовательного доступа ко всем элементам составного объекта, не раскрывая его внутреннего устройства.
Общая структура решения.
Iterator – итератор: определяет интерфейс для доступа и обхода элементов.
ConcreteIterator – конкретный итератор: реализует интерфейс Iterator; следит за текущей позицией при обходе агрегата.
Aggregate – агрегат: определяет интерфейс для создания объекта-итератора.
ConcreteAggregate – конкретный агрегат: реализует интерфейс создания итератора и возвращает экземпляр подходящего класса ConcreteIterator.
Item – элемент: интерфейс внутренних объектов агрегата (требуется, если на уровне Iterator объявлена операция CurrentItem).
ConcreteIterator отслеживает текущий объект в агрегате и может определить следующий элемент, а также завершение обхода (IsDone).