The Visitor design pattern lets us separate algorithms from the objects on which they operate. See how to implement it to follow the open/closed principle.