Simple project representing the Visitor design pattern.
Visitor is a behavioral design pattern that lets you separate algorithms from the objects on which they operate.
In essence, the visitor allows adding new virtual functions to a family of classes, without modifying the classes. Instead, a visitor class is created that implements all of the appropriate specializations of the virtual function. The visitor takes the instance reference as input, and implements the goal through double dispatch.
Source: Wikipedia | Refactoring Guru