The Iterator pattern
Provides a way to access elements of an
aggregate object without exposing the
underlying representation
Ex: a List class
» Want to traverse the list in several ways
forward
backward
filtered
sorted
...