Function design_pattern_examples_rust::visitor::visitor_exercise
source · pub fn visitor_exercise() -> Result<(), String>
Expand description
Example of using the “Visitor” design pattern.
The Visitor pattern is used to add functionality to a list of otherwise unchanging element objects by passing a visitor object to each element object. Each element object calls the visitor object, passing itself as an argument. The visitor object then does something based on the type of the element.
In this exercise, a collection of shop objects is initialized then an order visitor is created to retrieve an item from one of the shop objects. Along the way, shops that don’t have the necessary ingredients use another order visitor to order ingredients from other shops. This approach assumes no two shops sell the same thing.