Шаблон проектирования Итератор (Iterator) используется для последовательного доступа к элементам коллекции без раскрытия деталей ее реализации. Он позволяет перебирать элементы коллекции без знания о ее внутренней структуре и способе обхода.
Итератор состоит из двух основных компонентов: интерфейса, определяющего методы для перемещения по коллекции и доступа к ее элементам, и конкретной реализации итератора, связанной с определенной коллекцией. Конкретный итератор содержит информацию о текущей позиции в коллекции и методы для перемещения вперед и назад, доступа к текущему элементу и проверки наличия следующего элемента.
Использование шаблона итератора позволяет упростить код, связанный с перебором элементов коллекции, и сделать его более универсальным и гибким. Он также позволяет скрыть детали реализации коллекции от пользователей и обеспечить ее безопасный доступ в многопоточной среде.