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