Cursor
Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation.
Use the Iterator pattern
- to access an aggregate object's contents without exposing its internal representation
- to support multiple traversals of aggregate objects
- to provide a uniform interface for traversing different aggregate structures

