Das Flyweight-Pattern in Java ist ein strukturelles Entwurfsmuster, das darauf abzielt, die Speichernutzung zu reduzieren und die Leistung zu verbessern, indem so viele Objekte wie möglich gemeinsam genutzt werden.
Java Flyweight-Pattern umfasst normalerweise die folgenden 4 Rollentypen
Flyweight Factory: Verantwortlich für die Erstellung und Verwaltung von Flyweight-Objekten.
Concrete Flyweight: Implementiert die Flyweight-Schnittstelle und speichert den internen Status in Bezug auf den gemeinsamen Status.
Abstract Flyweight (Flyweight): Definiert die Schnittstelle oder abstrakte Klasse, die das Flyweight-Objekt benötigt implementieren.
Unshared State (Unshared State): Speichert den nicht Shared State des Flyweight-Objekts
Hinweis: Abstrakte Flyweight- und Non-Shared-State-Rollen sind optional, sie können weggelassen werden, um ihre Funktionalität mit anderen Rollen zusammenzuführen
Wenn der Client die Erstellung oder den Zugriff auf ein Flyweight-Objekt anfordert, prüft die Flyweight-Fabrik, ob das Objekt bereits erstellt wurde. Wenn es bereits erstellt wurde, wird ein Verweis auf das vorhandene Objekt zurückgegeben. Es wird ein neues Objekt erstellt und seine Referenz zurückgegeben. Auf diese Weise können Kunden vorhandene Objekte teilen, ohne neue Objekte erstellen zu müssen, wodurch der Speicherverbrauch reduziert und die Leistung verbessert wird.
Nehmen Sie Produktinformationen im E-Commerce als Beispiel Im E-Commerce hat jedes Produkt einen Namen, einen Preis, einen Bestand und andere Attribute. Normalerweise muss für jedes Produkt ein separates Objekt erstellt werden, was zu einer Erhöhung der Speicherauslastung führt, und wenn dasselbe Produkt mehrmals gekauft wird erstellt mehrere identische Objekte und verschwendet Ressourcen , Preis, Lagerbestand und andere Attribute des Produkts. Erstellen Sie dann eine spezifische Produktklasse ConcreteProduct, implementieren Sie die Produktschnittstelle und definieren Sie den gemeinsamen internen Statusnamen, den Preis und den Lagerbestand und verwalten Sie gemeinsam genutzte Produktobjekte. Wenn der Kunde ein Produkt kaufen möchte, prüfen wir zunächst, ob ein Verweis darauf erstellt wurde Wenn das vorhandene Objekt nicht erstellt wurde, wird ein neues Objekt erstellt und in der HashMap gespeichert.
Zusammenfassung
Vorteile
Reduzieren Sie die Erstellung von Objekten, sparen Sie Speicherplatz und verbessern Sie Systemleistung.
Durch die gemeinsame Nutzung von Objekten kann nur eine Kopie desselben Objekts im System vorhanden sein, wodurch der Speicheraufwand verringert wird. Verbesserung der Skalierbarkeit des Systems, falls erforderlich. Sie müssen sie nur im Werk erstellen und den Originalcode nicht ändern.Das obige ist der detaillierte Inhalt vonSo verwenden Sie das Java-Flyweight-Entwurfsmuster, um die Objekterstellung zu optimieren und Leistung und Effizienz zu verbessern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!