Objektpool
Der Objektpool (engl. object pool pattern) ist ein in der Softwareentwicklung eingesetztes Entwurfsmuster, genauer ein Erzeugungsmuster. Es wird dazu verwendet, Objekte nach initialer Erzeugung (im Objektpool) vorzuhalten, sofern dies sinnvoller ist als sie bei jeder Verwendung neu zu erzeugen. Dies trifft vor allem auf häufig benötigte und aufwendig zu erstellende Objekte zu. Die Objekte werden dann im Objektpool abgelegt und bei Bedarf durch diesen wieder zur Verfügung gestellt.[1]
Vorteile
[Bearbeiten | Quelltext bearbeiten]Die Wiederverwendung bereits erzeugter Objektinstanzen reduziert potentiell den Aufwand (Zeit / Rechenleistung) zur Objekterzeugung.[2]
Nachteile
[Bearbeiten | Quelltext bearbeiten]Die Wiederverwendung bereits genutzter Objekte erhöht die Komplexität des Programms.[3]
Verwendung
[Bearbeiten | Quelltext bearbeiten]Das Entwurfsmuster Objektpool wird häufig genutzt, vor allem im Bereich von Thread-Pooling und Connection-Pooling (z. B.: Datenbankverbindungen) besteht oft hohes Potenzial für Performancegewinne, da das Erstellen eines Threads und der Verbindungsaufbau zu einem Datenbankmanagementsystemen relativ 'aufwendig' sind. Jedoch ist dies nicht für alle Objekttypen der Fall, speziell bei wenig komplexen Objekten ist in aktuellen Laufzeitumgebungen das Neuerstellen von Objekten 'günstiger' als aufwendige Pooling-Mechanismen.
Beispiel
[Bearbeiten | Quelltext bearbeiten]Als Beispiel für einen Objektpool kann eine Bibliothek dienen. Ein Kunde (Client) leiht sich von der Bibliothek (Objektpool) ein Buch (Objekt). Nachdem er es gelesen hat, gibt er das Buch an die Bibliothek zurück. Dadurch steht es für weitere Kunden zur Verfügung. Das Buch muss nicht für jeden Lesevorgang neu gedruckt werden.
Abgrenzung von Objektpool zu Cache
[Bearbeiten | Quelltext bearbeiten]Ein Objektpool speichert die Objekte ohne Zustand, dadurch sind sie bei jedem Abruf im Ausgangszustand. Beim Caching hingegen werden die Objekte inklusive Zustand gespeichert.
Weblinks
[Bearbeiten | Quelltext bearbeiten]- Beispiel (patterns-kompakt.de) (deutsch)
- Erklärung in: Architektur- und Entwurfsmuster der Softwaretechnik (deutsch)
- Apache Commons Pool: A mini-framework to correctly implement object pooling in Java
Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ Joachim Goll, Manfred Dausmann: Architektur- und Entwurfsmuster der Softwaretechnik. 4. Auflage. Springer Vieweg Verlag, Wiesbaden 2013, ISBN 978-3-8348-2432-5, S. 78.
- ↑ Karl Eilebrecht, Gernot Starke: Patterns kompakt. 4. Auflage. Springer Vieweg Verlag, Berlin 2013, ISBN 978-3-642-34717-7, S. 44.
- ↑ Karl Eilebrecht, Gernot Starke: Patterns kompakt. 4. Auflage. Springer Vieweg Verlag, Berlin 2013, ISBN 978-3-642-34717-7, S. 44–45.