10. Traversable
(не входитв «spl интерфейсы»)
«Абстрактный базовый интерфейс,который не можетбыть реализован
сам по себе. Вместо этого он должен быть реализован
используя IteratorAggregate или Iterator.»
Не может быть реализован самостоятельно
Может быть обнаружен (instanceof)
foreach() обнаруживает travesable interface и делает магию
11. Iterators (Итераторы)
(все ещене spl :D)
«Интерфейс для внешних итераторов или объектов, которыемогут
повторять себя изнутри.»
Интерфейс Итератора
15. Отфильтроватьвсе MP3 и JPG файлы
Отфильтроватьвсе MP3 файлыкоторые занимаю
мeста больше чем 6MB
Не фильтроватьвообще
Поиск файлов по подкаталогам
Поиск файлов по нескольким директориям
16. Как мы можем протестировать данный код? (никак)
Как мы можем поддерживать данный код? (никак)
Как мы можем повторно использовать данный код? (никак)
27. Переиспользование.Мы можем использоватьитераторы где угодно.
Тестируемость. Итераторы могут быть протестированыв отдельности.
Поддерживаемость. Нет необходимости адаптироватьпод нашу
бизнес логику.
28. Countable
(Ура! Это spl интерфейс )
«Классы, которые реализуют интерфейсCountable,могут быть
использованы с функцией count().»
45. Не изменяйте кешируемые данные(Выможете, но не нужно этого
делать)
Кеширование заключаетсяв том, что запоминается результат методов
key, valid, current.Такимобразом вызов этих методов не вызывает
повторного обращения к оригинальномуитератору
Ценится за удобную функцию hasNext(Вероятней всего его нужно было
назвать LookAheadIterator)
Очищает кеш при вызове функции rewind (и таким образом, при
следующем foreach())