Diskussion:Das Java-Modell: Unterschied zwischen den Versionen

Aus Eclipse
Wechseln zu: Navigation, Suche
(In Quarantäne genommenes Code-Beispiel)
 
K (Kategorisiert: Java-Modell)
Zeile 33: Zeile 33:
  
 
:[[Benutzer:Mueller|Mueller]] 20:41, 24. Jun. 2009 (UTC)
 
:[[Benutzer:Mueller|Mueller]] 20:41, 24. Jun. 2009 (UTC)
 +
 +
[[:Category:Java-Modell]]

Version vom 24. Juni 2009, 22:59 Uhr

Traversieren des Java-Element-Baums

Allein um einige bestimmte Elemente aufzusuchen, ist das Traversieren des Elementbaums viel zu aufwendig, weil dabei alle Element-Info-Objekte, die Bodys des Handle/Body-Paares erzeugt werden. Für diesen Zweck gibt es die Search-Engine, die einen Wort-Index verwaltet. Reicht die Search-Engine nicht, dann kann man auf folgende Weise den Element-Baum von einem gegebenen IParent-Element aus durchlaufen.


 public class Traversor {
     SomeElementRequestor requestor;
     // ...
     public void collectChildren(IParent parent) throws JavaModelException {
         if ( ! parent.hasChildren() ) {  // base case
             return;
         }
         IJavaElement[] children= parent.getChildren();
         for (IJavaElement child : children ) {
             requestor.acceptElement(child);
             if ( child instanceof IParent ) {
                 collectChildren((IParent)child);
             }
         }
     }
 }

 class SomeElementRequestor {
     public void acceptElement(IJavaElement element) {
         // process element
     }
 }

Wir separieren hier die Verantwortlichkeit für das Traversieren und das Verabeiten der Java-Elemente mit Hilfe des Builder Patterns. Das Traversor-Objekt spielt die Rolle des Directors und das SomeElementRequestor-Objekt die Rolle des Builders. Builder werden nach der Eclips-JDT-Core Namenskonvention häufig Requestor oder Collector genannt (was nicht dazu verleiten sollte, das Builder-Pattern mit dem Requestor-Pattern, das ganz etwas anderes beschreibt, zu verwechseln).

Mueller 20:41, 24. Jun. 2009 (UTC)

Category:Java-Modell