The Visitor pattern
Represent an operation to be performed
on the elements of an object structure
Lets you defined a new operation without
changing the classes of the elements on
which it operates