Visitor Pattern
In object-oriented programming and software engineering, the visitor design pattern is a way of separating an algorithm from an object structure on which it operates. A practical result of this separation is the ability to add new operations to existing object structures without modifying those structures. It is one way to follow the open/closed principle.
We could use inheritance to do this, but it will mean that each object will need to be modified (OCP)
Links
https://softwareengineering.stackexchange.com/questions/333692/understanding-the-need-of-visitor-pattern
https://medium.com/factory-mind/visitor-design-pattern-demystified-940bd3903d56
http://webcache.googleusercontent.com/search?q=cache:http://butunclebob.com/ArticleS.UncleBob.IuseVisitor
https://www.codeproject.com/Articles/872151/Visitor-Pattern-ReExplained
https://www.journaldev.com/1769/visitor-design-pattern-java
https://stackoverflow.com/questions/9759141/overloading-in-java-and-multiple-dispatch
Designing functional and fluent API: example of the Visitor Pattern by José Paumard https://www.youtube.com/watch?v=gq23w9nycBs
https://github.com/JosePaumard/devoxx-belgium-2019-visitor-lambda/tree/master/src/main/java/org/paumard/visitor
Understanding The Visitor Design Pattern https://www.youtube.com/watch?v=TeZqKnC2gvA
https://nipafx.dev/java-visitor-pattern-pointless/
Generified visitor
https://stackoverflow.com/questions/36363142/generified-implementation-of-visitor-pattern-in-java
Double dispatch
dynamic dispatch. The actual implementation of a method is selected in runtime by the target object
Double dispatch
The ability to choose the method implementation based on this object and also one of the arguments passed to the function.
the Visitor pattern is a way to simulate the lack of support for double dispatch
To simulate multiple dispatch is a language feature known as pattern matching.
Issues
https://blog.jooq.org/the-visitor-pattern-re-visited/
Anti pattern
https://typeinference.com/oop/2015/08/17/anti_oop_design_patterns.html
Improved via Java pattern matching
https://youtu.be/10dn_-TBzLE?t=1516 Revisiting Design Patterns after 20 by Edson Yanaga
Last updated