I've written a short list of the benefits and drawbacks of using this pattern.
The following are the benefits:
- Open/Closed: You can add new behaviors that can work with objects of different classes without modifying them directly. This approach follows the object-oriented programming principle of Open/Closed that states that entities should be open for extension but closed for modification.
- Single Responsibility: The Visitor pattern can adhere to the single responsibility principle in the sense you can have an object (visitable) that holds the data and another object (visitor) is responsible for introducing specific behaviors.
The following are some of the potential drawbacks:
- Accessibility: Visitors could lack the necessary access to specific private fields and methods of the elements that they are visiting. Therefore, we might need to expose more public properties in our classes than we usually would if we didn't use the...