Visitor
Add new operations to an object structure without changing its classes.
Use it when
You need many unrelated operations over a stable set of element types.
Example coming soon
I'm still writing up a real-world example of the Visitor pattern. Check back later.