Container (Entwurfsmuster)

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Das Container-Entwurfsmuster wird im Bereich der Softwareentwicklung verwendet. Es wird in die Gruppe der Strukturmuster eingeordnet.

Verwendung[Bearbeiten | Quelltext bearbeiten]

Das Container-Entwurfsmuster teilt die Anwendungslogik in zwei Bestandteile. Zum einen wird eine Komponente benötigt, welche gezielt ihre Hauptaufgabe erfüllt. Ein dazugehöriger Container versorgt die Komponente mit allen benötigten Schnittstellen zu anderen Systemen. Eine Erweiterung ist, dass die Komponenten im Container zur Laufzeit beliebig hinzugefügt oder entfernt werden können. Dieses Entwurfsmuster ist kein ursprüngliches Muster der GoF.

Java EE[Bearbeiten | Quelltext bearbeiten]

Das Entwurfsmuster findet z. B. bei der Java EE starke Verwendung und ist deren essentieller Bestandteil. So sind viele Dienste der Java EE mit diesem Pattern konstruiert. Zum Beispiel der Web-Container, welcher Servlets beinhaltet. Andere Beispiele sind EJB-Container oder JMS-Provider.

Bestandteile[Bearbeiten | Quelltext bearbeiten]

Eine Komponente kapselt eine logische Information/Routine des Gesamtsystems. Sie kann zur Laufzeit verändert werden oder mit anderen Komponenten (eventuell aus anderen Containern) interagieren.

Jeder Container kann bestimmte Komponenten beinhalten. Die Komponenten werden komplett gekapselt und eventuelle Anfragen oder Ereignisse werden an diese vom Container weitergeleitet. Unter Umständen sorgt der Container mit bestimmten Routinen selbst für die Instanzierung der Komponenten.

Vorteile[Bearbeiten | Quelltext bearbeiten]

  • Das Prinzip der Kapselung wird stark unterstützt
  • Die Komplexität des Systems für Weiterentwicklung wird extrem vermindert
  • Veränderungen an den Komponenten gestalten sich relativ einfach
  • Hohe Testbarkeit, Veränderbarkeit und Stabilität

Nachteile[Bearbeiten | Quelltext bearbeiten]

  • Teilweise höherer Aufwand bei der Entwicklung des Containers
  • Eindeutige Definition der Schnittstelle zwischen Container und Komponente notwendig

Siehe auch[Bearbeiten | Quelltext bearbeiten]