Muster: Flyweight

FliegengewichtBearbeiten

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

ZweckBearbeiten

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.

UMLBearbeiten

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

EntscheidungshilfenBearbeiten

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.

ImplementationBearbeiten

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 MusterBearbeiten

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

WeblinksBearbeiten

Wikipedia: Fliegengewicht (Entwurfsmuster)