The visitor pattern is of these known, but not often used patterns. I think this is strange, as it is really a nice thing.
What is it used for? Basically it used to iterate over a tree structure where each node might be of a different type and an iterator has to react to these types different.