Pattern

Lösungen zu Kapitel 12

  1. Ein Interface zum Aufbau eines hierarchischen Dateibaums sollte mindestens die Methoden add() und getChildren() enthalten. Um wieder ein Element aus diesem Dateibaum entfernen zu können, empfiehlt es sich, auch eine remove()-Methode vorzusehen (s. src/java/dir/FileSystemComponent.java)
  2. Eine mögliche Lösung besteht in der Bereitstellung eines Interfaces "`Composite"' mit einer Default-Implementierung. Zusätzlich kann man noch zwei Annotations "`@Node"' und "`@Leaf"' vorsehen, mit denen die Knoten und Blätter eines Baumes gekennzeichnet werden können (s. src/aj/pattern/composite/CompositeAspect.aj).
    Über die @Leaf-Annotation lässt sich auch die Default-Implementierung einer getChildren()-Methode auf "return null" reduzieren.
  3. Vergessen Sie nicht, bei der Definition des Pointcuts den Aspekt selbst von der Instrumentierung auszunehmen. Sie riskieren sonst einen StackOverflowError (s. src/aj/patternBugPattern.aj). In checkArgs() werden die Argumente überprüft und eine NullPointerException ausgelöst, wenn eines davon ein "null"-Argument ist.

letzte Änderung: 19. August 2005