Muster: Flyweight

Aus Wikibooks

Fliegengewicht[Bearbeiten]

Das Fliegengewicht (engl. flyweight) dient dazu eine große Anzahl an Objekten zu verwalten, ohne eine Instanz von jedem Einzelnen zu erstellen.

Zweck[Bearbeiten]

Um von einer Klasse keine Vielzahl von Objekten mit ähnlichen Zuständen erzeugen zu müssen, werden repräsentative Instanzen in einem Pool gehalten, der bei Bedarf passende Referenzen liefert.

UML[Bearbeiten]

Dieser Abschnitt wird dir die Notation in der UML zeigen. Dies wird hilfreich sein, wenn du mit modernen Entwicklungswerkzeugen (vorhandene) Projekte „begutachtest“.

Entscheidungshilfen[Bearbeiten]

Wenn von einer Klasse zahlreiche Instanzen erzeugt werden sollen, die zumeist den gleichen oder nur wenige verschiedene Zustände annehmen, dann ist das ein Indiz dafür, dass diese als Fliegengewichte realisiert werden können.

Implementation[Bearbeiten]

Zur Implementierung werden benötigt:

  • Eine Fabrikklasse welche den Pool verwaltet, auf Anforderung Objektreferenzen zurück gibt und ggf. Objekte neu erstellt und im Pool ablegt.
  • Ein Interface der Fliegengewichte.
  • Eine oder mehrere Implementierungen der Fliegengewichte.

Verwandte Muster[Bearbeiten]

Fliegengewichte werden gerne innerhalb eines Proxys verwendet, da so z. B. die Anzahl der Referenzen auf diese gezählt werden können.

Weblinks[Bearbeiten]

Wikipedia: Fliegengewicht (Entwurfsmuster)