Java Reference
In-Depth Information
4.21 Das Erzeugungsmuster Objektpool
4.21.1
Name/Alternative Namen
Objektpool (engl. object pool).
4.21.2
Problem
Die Erzeugung bestimmter Ressourcen wie Datenbankverbindungen oder Threads er-
weist sich oftmals als rechenleistungs- und speicherintensiv. Daher sollen solche In-
stanzen als wiederverwendbare Ressourcen betrachtet werden und aus einem Pool
abgerufen werden können. In speziellen Fällen soll auch die Anzahl der existierenden
Instanzen eines Typs bewusst beschränkt werden.
Das Muster Objektpool soll es ermöglichen, Objekte aus einem
Pool zur Verfügung zu stellen und wiederzuverwenden, statt sie
jedesmal aufwendig bei jeder Anforderung neu zu erzeugen.
4.21.3
Lösung
Für ausgesuchte Typen, deren Instanziierung zu aufwendig ist oder bei denen die Zahl
der Instanzen beschränkt werden soll, verwendet ein Objektpool die auszugebenden
Objekte wieder. Der Objektpool hält die Objekte bereit und teilt sie den Interessenten
zu. Die auszugebenden Objekte werden im Pool zwischengespeichert. Wie bei einem
Pfandflaschensystem sorgt der Objektpool für eine Wiederverwendung. Damit werden
Ressourcen gespart. Solche Objekte werden nach Gebrauch nicht zerstört, sondern
dem Pool für eine erneute Verwendung wieder zugeführt. Wie die Flaschen im Pfand-
flaschensystem müssen auch die Objekte "gereinigt", d. h. in einen "sauberen" ein-
heitlichen Zustand gebracht werden. Alle Objekte im Pool müssen nämlich denselben
Zustand aufweisen, damit es keine Rolle spielt, welches dieser Objekte verwendet
wird. Das Muster Objektpool ist ein objektbasiertes Muster.
Die Effizienz eines Objektpools hängt natürlich von der Güte der Implementierung und
der Art der im Objektpool gespeicherten Objekte ab.
Ein Objektpool erbringt die folgenden Leistungen:
x zurückgegebene Objekte annehmen, zwischenspeichern sowie initialisieren und
x angeforderte Objekte herausgeben.
Die verschiedenen Nutzer eines Pools greifen in der Rolle von Clients auf den Objekt-
pool als Server zu. Da der Objektpool eine einzige Zentralstelle für alle Clients sein
soll, wird er als Singleton angelegt. Das Singleton-Muster (siehe Kapitel 4.20) garan-
tiert, dass von einer bestimmten Klasse nur eine einzige Instanz angelegt wird, auf die
von mehreren Clients zugegriffen werden kann. Durch die Auslegung als Singleton
wird sichergestellt, dass die auszugebenden Objekte nur von einer einzigen Instanz
Search WWH ::




Custom Search