Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Паттерн Iterator<br />
Применимость<br />
Используйте паттерн итератор:<br />
а для доступа к содержимому агрегированных объектов без раскрытия их<br />
внутреннего представления;<br />
а для поддержки нескольких активных обходов одного и того же агрегированного<br />
объекта;<br />
а для предоставления единообразного интерфейса с целью обхода различных<br />
агрегированных структур (то есть для поддержки полиморфной итерации).<br />
Структура<br />
return new Concretelterator(this)<br />
Участники<br />
a Iterator - итератор:<br />
- определяет интерфейс для доступа и обхода элементов;<br />
a Concretelterator - конкретный итератор:<br />
- реализует интерфейс класса Iterator;<br />
- следит за текущей позицией при обходе агрегата;<br />
a Aggregate - агрегат:<br />
- определяет интерфейс для создания объекта-итератора;<br />
a ConcreteAggregate - конкретный агрегат:<br />
- реализует интерфейс создания итератора и возвращает экземпляр подходящего<br />
класса Concretelterator.<br />
Отношения<br />
Concretelterator отслеживает текущий объект в агрегате и может вычислить<br />
идущий за ним.<br />
(<br />
Результаты<br />
У паттерна итератор есть следующие важные особенности:<br />
а поддерживает различные виды обхода агрегата. Сложные агрегаты можно обходить<br />
по-разному. Например, для генерации кода и семантических проверок