Besucher-Muster für Bäume

interface Tree<K> { }
class Leaf<K>   implements Tree<K> { 
  Leaf(K key) { .. } }
class Branch<K> implements Tree<K> {
  Branch(Tree<K> left, Tree<K> right) { .. } }
für jeden Teilnehmer des Kompositums eine Methode:
interface Visitor<K,R> { // mit Resultattyp R
    R leaf (K x);
    R branch (R left, R right);  }
der Gastgeber (Baumknoten) nimmt Besucher auf:
interface Tree<K> {
  <R> R receive (Visitor<K,R> v) }



Johannes Waldmann 2011-07-07