The primary purpose of the Visitor pattern is simple once you grasp it; a Visitable object permits a Visitor to operate on a specific element of its structure. This process allows the visited object to acquire new functionality from visitors without being directly modified. This description might seem very abstract at first, but it is easier to visualize if we imagine an object as a structure instead of a closed-off container of data and logic. Therefore, it is possible with the Visitor pattern to traverse an object's structure, operate on its elements, and extend its functionality without modifying it.
Another way to imagine the Visitor pattern in action is by visualizing the bike in our game colliding with a power-up. Like an electronic current, the power-up flows through the inner structure of the vehicle. Components marked as visitable get visited by the power-up, and new functionalities are added, but nothing is modified...