Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Lubbert Laue Geändert vor über 11 Jahren
1
Fliegengewicht Ein objektbasiertes Strukturmuster
2
FLIEGENGEWICHT - Objektbasiertes Strukturmuster - Zweck: - effektive Nutzung von Objekten kleinster Granularität --> dadurch Senkung von Speicherkosten - extrahieren kontextabhängiger Informationen Verringerung der absoluten Anzahl von Objektinstanzen - Vergl.: Kompositionsmuster Baumstruktur von kleineren Objekten
3
FLIEGENGEWICHT - intrinsischer / extrinsischer Zustand: - intrinsischer Zustand wird im Fliegengewicht gespeichert - er besteht ausschließlich aus der vom Kontext des Fliegen- gewichtes unabhängigen Information --> dadurch wird Fliegengewicht gemeinsam nutzbar - extrinsischer Zustand abhängig vom Kontext des Fliegen- gewichts und wechselt mit ihm - Fliegengewicht wird durch Klientobjekte mit benötigtem extrinsischem Zustand versorgt
4
FLIEGENGEWICHT - Beispiel: Dokumenteditor - intrinsischer Zustand: Zeichencode eines jeweiligen Buchstabens im Alphabet - extrinsischer Zustand: graphische Positionierung, typographischer Stil ausgehend von den Layout-Algorithmen des Editors --> jedes Auftreten eines Zeichens zu einem bestimmten Kontext verweist auf eine gemeinsam genutzte Menge von Fliegen- gewichtobjekten
5
FLIEGENGEWICHT - Struktur: Fliegengewicht (Klasse) deklariert Schnittstelle, durch die Fliegengewichte einen extrinsischen Zustand erhalten und verarbeiten können KonkretesFliegengewicht (Zeichen) implementiert die Fliegengewicht-Schnittstelle und hält den intrinsischen Zustand FliegengewichtFabrik erzeugt und verwaltet Fliegengewicht-Objekte und stellt sicher, daß Fliegengewichte auf korrekte Weise gemeinsam genutzt werden Klient verwaltet eine Referenz auf Fliegengewichte und berechnet/speichert deren extrinsischen Zustand
6
FLIEGENGEWICHT - Implementierung: Fliegengewicht GLYPH – Schnittstelle für extrinsischen Zustand (als Verbindung von Zeichen und Formatierung) class Glyph { public: virtual void Zeichne (Fenster*,GlyphKontext&); virtual void SetzeZeichensatz (Zeichensatz*,GlyphKontext&); … } Glyphkontext – Abbildung zwischen Glyphobjekt und Zeichensatz (wird durch Glyph aktualisiert ; liefert Zeichensatz eines Glyphobjektes) class GlyphKontext { public: GlyphKontext(); … } Bsp.: GlyphKontext glyphKontext; glyphKontext.SetzeZeichensatz(timesKursiv 12,6); 6 ist dann der Index im BBaum, der auf den Zeichensatz timesKursiv12 verweist (konkretes) Fliegengewicht ZEICHEN – speichert Zeichencode class Zeichen { public: Zeichen(char); … }
7
FLIEGENGEWICHT - Implementierung: FliegengewichtFabrik – erzeugt Glyphobjekte (sichert gemeinsame Nutzung von Zeichen-Objekten) class GlyphFabrik { public: GlyphFabrik (); virtual Zeichen* ErzeugeZeichen (char); … } ErzeugeZeichen sucht ein Zeichen aus einem Array und gibt das entsprechende Glyphobjekt zurück. Falls dieses Zeichen nicht existiert wird das Glyphobjekt erzeugt, im Array abgelegt und zurückgegeben.
8
FLIEGENGEWICHT - Einsatzbedingungen: - eine Anwendung verwendet eine große Menge von Objekten - Speicherkosten allein aufgrund der Anzahl von Objekten groß - Großteil des Objektzustands kann extrinsisch gemacht (in den Kontext verlagert) werden - viele Gruppen von Objekten können durch relativ wenige gemeinsam genutzte Objekte ersetzt werden
9
FLIEGENGEWICHT - Konsequenzen: - mögliche Laufzeitkosten durch Transferieren, Aufsuchen oder Berechnen des extrinsischen Zustands - Speichergewinne abhängig von: + Reduzierung der Gesamtmenge an Objekten aufgrund möglicher gemeinsamer Nutzung + Größe des intrinsischen Zustands pro Objekt + Speicherung oder Berechnung des extrinsischen Zustands - Speicherplatz wird eingespart: + je mehr Fliegengewichte gemeinsam genutzt werden + wenn Objekte einen großen Teil sowohl intrinsischen als auch extrinsischen Zustands verwenden + wenn der extrinsische Zustand berechnet werden kann und nicht gespeichert werden muß
10
FLIEGENGEWICHT - bekannte Verwendungen: - Konzept der Fliegengewichtobjekte erstmals in InterViews 3.0 beschrieben und als Entwurfstechnik untersucht --> Entwicklung des Dokumenteditors Doc + Doc verwendete Glyphobjekte zur Representation jedes einzelnen Zeichens im Dokument + Erzeugung eines Glyphexemplars für jedes Zeichen eines bestimmten Stils, der seine graphischen Attribute definiert somit: intrinsisch = Zeichencode und Stilinformation (Index aus Stiltabelle) extrinsisch = nur die Position (dadurch hohe Geschwindigkeit) --> in einem typischen Anwendungsfall mussten für ein aus 180.000 Zeichen bestehendes Dokument lediglich 480 Zeichenobjekte alloziert werden
Ähnliche Präsentationen
© 2025 SlidePlayer.org Inc.
All rights reserved.