09.04.2016 Views

Priemioop

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 />

по-разному. Например, для генерации кода и семантических проверок

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!