Iterator Pattern provides a universal interface for accessing internal elements of an aggregate without exposing the underlying data structure. A typical iterator contains the following methods or getters:
first(): moves the cursor to the first element in the aggregates
next(): moves the cursor to the next element
end: a getter that returns a Boolean indicates whether the cursor is at the end
item: a getter that returns the element at the position of the current cursor
index: a getter that returns the index of the element at the current cursor
Iterators for aggregates with different interfaces or underlying structures usually end with different implementations as shown in the following figure:
Though the client does not have to worry ...