Dieser Artikel beschreibt den Genussmodus des Java -Designmusters. Teilen Sie es für Ihre Referenz wie folgt weiter:
Erklären Sie das Konzept: Wenn ein System mehrere identische Objekte in einem System enthält, teilen Sie einfach eine Kopie, und für jeden müssen Sie kein Objekt instanziieren. In einem Textsystem wird beispielsweise jeder Buchstabe als Objekt definiert, sodass 52 obere und untere Fallbuchstaben vorhanden sind, sodass 52 Objekte definiert werden müssen. Wenn es einen 1 -m -Text gibt, gibt es so viele Buchstaben. Wenn jeder Buchstabe ein Objekt definiert, wäre der Speicher vor langer Zeit explodiert. Wenn dann jeder Buchstabe ein Objekt teilt, speichert es die Ressourcen erheblich.
Im Fliegengewicht erscheint der Werksmodus häufig im Fliegengewichtsmodus, da verschiedene Objekte generiert werden sollen. Der interne Fliegengewicht wird verwendet, um zu teilen. Flyweight Factory ist verantwortlich für die Wartung eines Objektspeicherpools (Fliegengewichtspool), um Objekte mit internem Zustand zu speichern. Der Flygewichtsmodus ist ein Modus, der die Programmeffizienz und -leistung verbessert und die Laufgeschwindigkeit des Programms erheblich beschleunigt. Es gibt viele Anwendungskosten wie folgt:
Definieren Sie zuerst eine abstrakte Fliegengewichtklasse:
Paket Flygewicht; public abstract Class Flygewicht {public abstract void operation ();}Eine bestimmte Klasse implementieren:
Paket Flyweight; öffentliche Klasse Concretflygewicht erweitert Flygewicht {private String String; public concretflygewicht (String str) {String = str;} public void operation () {System.out.println ("konkret --- Flyweight:" + String);}}}Implementieren Sie eine Fabrikmethodenklasse:
Paket Flygewicht; import Java.util Hashtable (); // ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- null) {// ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Diese Fabrikmethodenklasse ist sehr kritisch. Hier ist eine detaillierte Erklärung:
Ein Hashtable wird bei 1 definiert, um jedes Objekt zu speichern. Ein zu instanziiertes Objekt wird bei 2 ausgewählt, und das Objekt, das um 6 zurückgegeben werden soll. Wenn im Hashtable kein Objekt ausgewählt werden muss, ist das variable Fliegengewicht null, und ein neues Fliegengewicht wird generiert, um im Hashtable zu speichern, und das Objekt wird zurückgegeben.
Schauen wir uns zum Schluss den Call of Flygewicht an:
Paket Flygewicht; import Java.util.hashtable; öffentliche Klasse FlyweightPattern {FlyweightFactory Factory = New Flygewichtfactory (); Flyweight Fly. FlyweightPattern () {fly1 = factory.getFlygewicht ("google"); fly2 = factory.getFlygewicht ("qutr"); fly3 = factory.getFlygewicht ("google"); fly4 = factory.getFlyweight ("google"); fly5 = factory.getFlyweight ("google"); void showflyweight () {fly1.operation (); fly2.operation (); fly3.operation (); fly4.operation (); fly5.operation (); fly6.operation (); int objSize = factory.getFlyweightSize (); args) {system.out.println ("Das Flyweight -Muster!"); FlyweightPattern fp = new FlyweightPattern (); fp.showflyweight ();}}Hier sind die laufenden Ergebnisse:
Beton --- Flygewicht: Google
Beton --- Fliegengewicht: Qutr
Beton --- Flygewicht: Google
Beton --- Flygewicht: Google
Beton --- Flygewicht: Google
Beton --- Flygewicht: Google
objSize = 2
Wir haben 6 Objekte definiert, von denen 5 gleich sind. Nach der Definition des Fliegengewichts sollte "Google" ein Objekt freigeben. In der tatsächlichen Anzahl von Objekten können wir sehen, dass es nur 2 Objekte gibt.
Zusammenfassen:
Der Fliegengewichtsmodus ist so wichtig, da Sie Ihnen helfen können, viel Speicherplatz in einem komplexen System zu sparen. In der Java -Sprache verwendet der String -Typ den Encyclopedia -Modus. Das String -Objekt ist abschließend und kann nach dem Erstellen nicht geändert werden. In Java sind Streichkonstanten im konstanten Pool vorhanden. Java sorgt dafür, dass eine String -Konstante nur eine Kopie im konstanten Pool hat. Zeichenfolge a = "ABC", wobei "ABC" eine String -Konstante ist.
Diejenigen, die mit Java vertraut sind, sollten das folgende Beispiel kennen:
String a = "Hallo"; String b = "Hallo"; if (a == b) system.out.println ("ok"); ElseSystem.out.println ("Fehler");Das Ausgabeergebnis ist: OK. Es ist ersichtlich, dass, wenn der Zustand die Adressen von zwei A und B vergleicht oder als Speicherplatz bezeichnet wird
Kernübersicht: Objekte, die gemeinsam genutzt werden können, dh Objekte des gleichen zurückgegebenen Typs sind tatsächlich dieselbe Instanz. Wenn der Client ein Objekt erstellt muss, erkennt die Fabrik, ob eine Instanz dieses Objekts vorhanden ist. Wenn es existiert, geben Sie diese Objektinstanz direkt zurück. Wenn es nicht existiert, erstellen und speichern Sie es. Dies hat eine Bedeutung des Singleton -Musters. Normalerweise verfügt die Fabrikklasse über eine Set -Typ -Mitgliedsvariable zum Speichern von Objekten wie Hashtable, Vektor usw. In Java, Datenbankverbindungspools, Thread -Pools usw. sind Anwendungen, die den Enyuan -Modus verwenden.
Für mehr Java-bezogene Inhalte können Leser, die an dieser Website interessiert sind, die Themen anzeigen: "Java-Datenstruktur und Algorithmus-Tutorial", "Zusammenfassung der Java-Operation DOM-Knoten-Tipps", "Zusammenfassung der Java-Datei- und Verzeichnisoperationstipps" und "Zusammenfassung von Java Cache Operation Tipps" "
Ich hoffe, dieser Artikel wird für Java -Programme aller hilfreich sein.