The visitor pattern
Just like the template and strategy patterns, the visitor pattern is flexible enough to perform any of the tasks we have so far considered, and as with other behavioral patterns, the trick lies in applying the right pattern to the right problem. The term visitor is perhaps not as self-explanatory as template or strategy.
The visitor pattern is designed so that a client can apply a process to a collection of unrelated objects, without having to worry about their differences. A good real-world example would be a trip to a supermarket where we might buy tinned products that have a bar code that can be scanned as well as fresh items that need to be weighed. This difference need not concern us in a supermarket as the cashier will take care of all this for us. In this case, the cashier is acting as the visitor, making all the necessary decisions regarding how to process individual items, leaving us (the client) only having to consider the final bill.
This does not really accord...