Skip to content

Iterator

Pandas edited this page Jun 19, 2017 · 2 revisions

Назначение

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

Применимость

Используйте паттерн итератор:

  • для доступа к содержимому агрегированных объектов без раскрытия их внутреннего представления;
  • для поддержки нескольких активных обходов одного и того же агрегиро ванного объекта;
  • для предоставления единообразного интерфейса с целью обхода различных агрегированных структур (то есть для поддержки полиморфной итерации).

Структура

Imgur

Участники

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

Отношения

ConcreteIterator отслеживает текущий объект в агрегате и может вычислить идущий за ним.

Результаты

У паттерна итератор есть следующие важные особенности:

  • поддерживает различные виды обхода агрегата
  • итераторы упрощают интерфейс класса Aggregate.
  • одновременно для данного агрегата может быть активно несколько обходов.

Clone this wiki locally