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