Diskussion:Das Java-Modell

Aus Eclipse
Version vom 24. Juni 2009, 23:04 Uhr von Mueller (Diskussion | Beiträge)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

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)