-
Notifications
You must be signed in to change notification settings - Fork 3
Iterator
Pandas edited this page Jun 19, 2017
·
2 revisions
Предоставляет способ последовательного доступа ко всем элементам состав ного объекта, не раскрывая его внутреннего представления.
Используйте паттерн итератор:
- для доступа к содержимому агрегированных объектов без раскрытия их внутреннего представления;
- для поддержки нескольких активных обходов одного и того же агрегиро ванного объекта;
- для предоставления единообразного интерфейса с целью обхода различных агрегированных структур (то есть для поддержки полиморфной итерации).
- Iterator – итератор: определяет интерфейс для доступа и обхода элементов;
- ConcreteIterator – конкретный итератор: реализует интерфейс класса Iterator; следит за текущей позицией при обходе агрегата;
- Aggregate – агрегат: определяет интерфейс для создания объекта итератора;
- ConcreteAggregate – конкретный агрегат: реализует интерфейс создания итератора и возвращает экземпляр подхо дящего класса ConcreteIterator.
ConcreteIterator отслеживает текущий объект в агрегате и может вычислить идущий за ним.
У паттерна итератор есть следующие важные особенности:
- поддерживает различные виды обхода агрегата
- итераторы упрощают интерфейс класса Aggregate.
- одновременно для данного агрегата может быть активно несколько обходов.
