Iterator es un patrón de diseño de comportamiento que permite el recorrido secuencial por una estructura de datos compleja sin exponer sus detalles internos.
Gracias al patrón Iterator, los clientes pueden recorrer elementos de colecciones diferentes de un modo similar, utilizando una única interfaz iteradora.
La idea principal del patrón Iterator es extraer la lógica de iteración de una colección e introducirla en un objeto diferente llamado iterador. Este iterador proporciona un método genérico de iteración sobre una colección independiente de su tipo.