| 
       auf verschiedenen Ausgabegeräten
  | 
  |  | 
     
     
       1. Hierarchie  | 
       Figuren: Punkte, Linien, Kreise, ...
  | 
  |  | 
     
     
       2. Hierarchie  | 
       Geräte: X-Fenster, Plotter, PostScript,
				  ...
  | 
  |  | 
     
     
       Diagramm  | 
       
  | 
  |  | 
     
     
       Probleme  | 
       mit der Schnittstelle
  | 
  |  | 
     
     
        | 
       Geräteschnittstelle zu schmal 
 extrem: 
 void zeichenPunkt(Punkt p)
         | 
     
     
        | 
       zu viel Arbeit in Figuren-Klassen
         | 
     
     
        | 
       zu ineffizient
  | 
  |  | 
     
     
        | 
       Geräteschnittstelle zu breit
         | 
     
     
        | 
       zu viel Arbeit in Geräte-Klassen
         | 
     
     
        | 
       zu viel Arbeit für ein neues Gerät
  | 
  |  | 
     
     
       Ursache  | 
       
         | 
     
     
       allgemeines Problem  | 
       
 void zeichen(Figur f, Gerät g)
  | 
  |  | 
     
     
        | 
       Verzweigen (über dynamisches Binden) nicht nur
 über den 1. Parameter (OOP: this), sondern
 über mehrere.
  | 
  |  | 
     
     
        | 
       Brücke ist manchmal eine Lösung, aber nicht immer.
   | 
  |  | 
     
     
       2. Beispiel  | 
       
Unterschiedliche
Implementierung von Zahlen 
mit beliebig mischbaren Operanden bei der Arithmetik.
  | 
  |  | 
     
     
       Spezifikation  | 
        | 
     
     
        | 
       Brückenmuster ungeeignet
  | 
  |  | 
     
     
       Diagramm  | 
       
  | 
  |  | 
     
     
        | 
       Lösung in Java mit instanceof-Tests für die Verzweigung über den 2. Parameter 
Die Klasse  GanzeZahl für die Arithmetik mit einer ganzen Zahl als 1. Parameter.
         | 
     
     
        | 
        | 
  |  | 
     
     
        | 
       Explosion der # der Hilfs-Methoden: 
 x + y --> n2 Additions-Methoden
  | 
  |  | 
     
     
        | 
       im Beispiel:
         | 
     
     
        | 
       3 Subklassen
         | 
     
     
        | 
       3 abstrakte Hilfmethoden
         | 
     
     
        | 
       3 Unterklassen mit Implementierungen der Hilfsmethoden
         | 
     
     
        | 
       9 Methoden
  | 
  |  | 
     
     
       double dispatch  | 
       oder allgemein multiple dispatch (mehrfaches Verteilen)
bedeutet das dynamische Binden
über zwei oder mehrere Parameter. Dieses kann in C++ und Java nur simuliert werden durch mehrfaches
Hintereinanderschalten von einfachem dynamischem Binden.
         | 
     
     
        | 
       Konsequenz: In C++ und Java viele Hilfsmethoden notwendig.
         | 
     
     
        | 
       Es gibt experimentelle OO-Sprachen, die multiple dispatch unterstützen.
         | 
     
     
        | 
       
ein Verhaltensmuster für double dispatch
         |