Описание Шаблон Итератор обеспечивает последовательный доступ ко всем элементам коллекции, не раскрывая при этом её внутренней реализации. Данный шаблон применяется, если необходимо: Таким образом, задача Итератора упростить обход и сделать его однообразным для коллекций различных типов. Причем реализация шаблона может находиться как в объекте, представляющим коллекции, так и отдельно от него. Многие языки высокого уровня (C#, C++, F#, PHP) имеют собственную на поддержку Итераторов. Но если стандартных возможностей не достаточно или нужна своя логика обхода элементов, то возможно реализовать данный шаблон самостоятельно. Кроме того, его реализация потребуется и для пользовательских типов коллекций. Итераторы можно разделить на два вида: Определим участников шаблона: Особенности реализации Реализация алгоритма обхода коллекции часто располагается в самом Итераторе. Это позволяет создать нескольких вариантов перебора элементов. Другим подходом является его размещение в самой коллекции. П