# Итератор Поведенческий паттерн проектирования, который даёт возможность последовательно обходить элементы составных объектов, не раскрывая их внутреннего представления. Паттерн **Итератор** предоставляет меха­низм последовательного перебора элемен­тов кол­лекции без раскрытия ее внутрен­него представления. ## Принципы - Класс должен иметь только одну причину для изменения Поручая классу не только его не­посредственную задачу (управление коллекцией объ­ектов), но и дополнительные задачи (перебор), создаются две возможные причины для изменения. Теперь измениться может как внутренняя реализация коллек­ции, так и механизм перебора. ### Связность ![coupling_cohesion.png](coupling_cohesion.png) Модуль или класс обладает ***высокой связностью*** (*high cohesion*), если он спроектирован для выполнения группы взаимосвязанных функций. Классы с ***низкой связностью*** (*low coupling*) проектируются на основе набора разрозненных функций. Классы, соответствующие принципу, обычно обладают высокой связностью, и более просты в сопровождении, чем классы с многими обязанностями и низкой связностью. ## Схемы ![scheme-1](scheme-1.png)