Adding Features with the Visitor Pattern
In the last chapter, we tackled the mountain that is the State design pattern, finite state machines, and a little automata theory to boot. In this chapter, we’ll work with the Visitor pattern, which lets you effectively tack on sets of related operations (or behaviors) to existing objects without changing the underlying object(s) in any way – look but don’t touch!
Essentially, new sets of behaviors become the visitors, and the objects you want to modify become the visitable elements; each visitor is applied to a list of visitable elements, new operations are executed, and the original code remains unharmed. The important bit is that each element gets its own custom implementation of the new behavior based on its own type and the visitor doing the visiting, so the entire system is customizable from the ground up.
If this sounds like a job for plain OOP, just wait because there’s one key difference that sets...