Supongamos que tenemos un contenedor (por ejemplo, un vector) y queremos tener una forma de acceder a los elementos sin mostrar los detalles. Un objeto contenedor debe permitir una forma de recorrer sus elementos sin exponer su estructura interna, es decir, separar el contenedor de la forma de recorrer sus elementos. Con este patrón tenemos la ventaja de simplificar la interfaz de un contenedor, ya que no contiene los métodos de recorrerlo.
Un ejemplo típico lo tenemos en Java. El cliente solicita al contenedor un iterador. A continuación el iterador dirige la forma de recorrer el contenedor:
Vector vec = new Vector(); vec.add( new String( "hola“ ) ); vec.add( new String( "adios“ ) ); Iterator it = vec.iterator(); while ( it.hasNext() ) System.out.println( (String) it.next() );