Brief Overview:

|
This patter provides a way of separating an algorithm from an object structure
it operates on. This provides a way of adding new operations to existing structures
without modifying those structures. In essence, the visitor allows one to add new
virtual functions to a family of classes without modifying the classes themselves.
Instead, one creates a visitor class that implements all of the appropriate
specializations of the virtual function. While powerful, the visitor pattern is
more limited than conventional virtual functions. It is not possible to create
visitors for objects without adding a small callback method inside each class.
|