Elexis API documentation
Version 2.1.6 as of December 11 2011

eaustria.utensil
Class Beobachterverwaltung<T>

java.lang.Object
  extended by eaustria.utensil.Beobachterverwaltung<T>
All Implemented Interfaces:
java.lang.Iterable<T>

public class Beobachterverwaltung<T>
extends java.lang.Object
implements java.lang.Iterable<T>

Stellt eine simple Verwaltung von Beobachtern zur Verfügung. Sei Bla die Klasse, die beobachtet werden kann, und sei Blabeobachter die Beobachterschnittstelle, die die Beobachter implementieren können, dann kann ein Beobachter wie folgt mit Hilfe dieser Klasse implementiert werden.

 
 class Bla {
   Beobachterverwalter beobachter = new Beobachterverwalter();
   
   ...
   
   public void beobachterRegistrieren(Blabeobachter b) {
     beobachter.hinzu(b);
     // alternativ, um als starke Referenz einzufügen
     // beobachter.hinzuStark(b);
   }
   
   public void beobachterDeregistrieren(Blabeobachter b) {
     beobachter.weg(b);
   }
   
   ...
   
   // Der Aufruf einer Beobachterfunktion funktioniert so
   public void fun() {
     ...
     for (Blabeobachter b : beobachter) {
       b.funAufgerufen();
     }
   }
 }  
 
Hinweis: Werden Beobachter als schwache Referenzen (WeakReference) verwaltet, dann kommen als Beobachter nur Objekte in Frage, die zumindest von einer anderen Stelle aus hart referenziert werden. Besitzt ausschließlich die Beobachterverwaltung die einzige (schwache) Referenz auf den Beobachter, so wird der Beobachter bei der nächsten Müllsammlung entfernt und keine Beobachtungen mehr weitergeleitet. Das passiert genau dann, wenn der Beobachter als anonyme innere Klasse ausgeführt ist.


Constructor Summary
Beobachterverwaltung()
           
 
Method Summary
 void hinzu(T b)
          Fügt einen neuen Beobachter der Liste der Beobachter als schwache Referenz hinzu.
 void hinzuStark(T b)
          Fügt einen neuen Beobachter der Liste der Beobachter als starke Referenz hinzu.
 java.util.Iterator<T> iterator()
          Iteriert über alle aktiven Beobachter.
 void weg(T b)
          Löscht einen Beobachter aus der Liste der Beobachter.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Beobachterverwaltung

public Beobachterverwaltung()
Method Detail

hinzu

public void hinzu(T b)
Fügt einen neuen Beobachter der Liste der Beobachter als schwache Referenz hinzu. Wird derselbe Beobachter mehrmals hinzugefügt, wird der Beobachter bei Ereignissen mehrmals benachrichtigt.

Parameters:
b - neuer Beobachter

hinzuStark

public void hinzuStark(T b)
Fügt einen neuen Beobachter der Liste der Beobachter als starke Referenz hinzu. Wird derselbe Beobachter mehrmals hinzugefügt, wird der Beobachter bei Ereignissen mehrmals benachrichtigt.

Parameters:
b - neuer Beobachter

weg

public void weg(T b)
Löscht einen Beobachter aus der Liste der Beobachter. Ist derselbe Beobachter mehrmals enthalten, werden alle Vorkommen des Beobachters gelöscht. Ist kein Beobachter enthalten, wird nichts gelöscht.

Parameters:
b - alter Beobachter

iterator

public java.util.Iterator<T> iterator()
Iteriert über alle aktiven Beobachter.

Specified by:
iterator in interface java.lang.Iterable<T>

Elexis API documentation
Version 2.1.6 as of December 11 2011

Copyright 2005-2011 by Gerry Weirich, Elexis