Iterate EffectiveModel with visitor pattern
User Story:
The EffectiveModel graph contains nodes of arbitrary type. How can a consumer iterate the nodes without loosing type information?
Considered Alternatives
- Use instanceof
- Use double dispatch of visitor pattern
Decision Outcome
- Chosen Alternative: Use double dispatch of visitor pattern
Comes out best - see above.
Pros and Cons of the Alternatives
Use instance
Use a combination of instanceof and switch/if statements whenever you want to iterate the nodes.
if (node instanceof WebServer){
doSomething(node)
}
+straightforward-really ugly, boilerplate
Use double dispatch of visitor pattern
+clean+extendable with use of java 8 default methods in interfaces+code reuse is easier-makes architecture a bit more complex-boilerplate in tosca elements: every class needs an accept() method