Итератор

Iterator

Назначение

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

Решаемые задачи

  • сохранение инкапсуляции объектов при переборе в структуре данных

  • поддержка нескольких активных обходов одного и того же агрегированного (составленного из подобъектов) объекта

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

Преимущества

  • упрощение работы со структурами данных: обход элементов без знания об особенностях внутренней реализации структуры данных

  • возможность работать с различными типами структур данных независимо от их реализации

  • возможность реализовывать различные алгоритмы обработки структур данных

Недостатки

  • добавление новых типов структур данных может потребовать изменения кода итератора

Связь с другими паттернами

  • Компоновщик: итераторы довольно часто применяются для обхода рекурсивных структур, создаваемых компоновщиком.

  • Фабричный метод: полиморфные итераторы поручают фабричным методам инстанцировать (создание экземпляров) подходящие подклассы класса Iterator.

  • Хранитель: итератор может использовать хранитель для сохранения состояния итерации и при этом содержит его внутри себя.

Last updated

Was this helpful?