Fliegengewichtsmodus: Durch die Freigabe von Technologie kann er eine große Anzahl feinkörniger Objekte effektiv unterstützen.
Der Yuan -Modus des Spaßes ist in den Yuan -Modus und Composite -Yuan -Modus in Yuan -Modus in Yan Hongs "Java and -Modus" unterteilt. Der Composite genießt Yuan im Verbundmodus kann nicht geteilt werden. Der Schlüssel zum Teilen des Genießens Yuan -Objekt besteht darin, zwischen internen und externen Zuständen zu unterscheiden. Diese beiden "Kongruents" sind zu schwer zu verstehen. Ich sage nicht, dass die Übersetzung nicht gut ist, aber vielleicht ist mein Verständnis schlecht, und die Übersetzungsversion von "Designmusterelementen wiederverwendbarer objektorientierter Software" wird in interne und externe Objekte übersetzt. Es ist relativ einfach und fühlt sich für den literarischen Geruch von konzeptionellen Dingen, die zu stark sind, unangenehm an. Die Charaktere hier verwenden auch die Anweisung "Grundlagen des Entwurfsmusters wiederverwendbarer objektorientierter Software", die nicht zwischen einfachen Modi und Verbundmodi unterscheidet, sondern über ein nicht gesamtes Gewicht von Conconcretefly (in "Java und Modus" zeigt, dass zusammengesetzter Genuss nicht geteilt werden kann). Wir sagen hier, dass es keine Genussrollen teilen kann. Auf diese Weise umfassen die Charaktere im Genussmodus:
Das institutionelle Diagramm der Klasse des Xiangyuan -Modells lautet wie folgt:
Wenn wir das Encyclopedia -Muster im Design von Java.lang.String verwenden, wissen wir, dass Saiten in Java immer gemeinsam genutzt werden, z. B. das folgende Code -Snippet:
String m = "a"; String n = "a"; System.out.println (m == n);
Dies wird wahr ausgegeben, was darauf hinweist, dass M und N auf dieselbe Instanz verweisen, und es gibt nur einen "A" im Speicher. Auf diese Weise wird der Yuan -Modus in der Zeichenfolge verwendet.
Die Verwendung des Xiangyuan -Modus im Textbearbeitungs- und Speicherprozess. Hier wird angenommen, dass der Artikel aus Linienobjekten besteht und die Linienobjekte aus mehreren Zeichenobjekten bestehen. Wenn jedoch jeder Charakter sein eigenes Objekt speichert, hat ein Post Tausende von Charakterobjekten, die den Systemspeicher ernsthaft verbrauchen und inakzeptable Laufzeitaufwand verursachen. Die gute Methode besteht darin, den Xiangyuan -Modus zu verwenden, um nur ASCII -Charakter -Codierungswerte als interner unveränderlicher Zustand zu speichern, die Charakterobjekte zu teilen, und formatierte Daten wie relative Charakterfarbe und -größe werden vom Client aufrechterhalten und können während der Laufzeit von außen übergeben werden. Jede Zeile ist ein nicht stammendes universelles Objekt, das aus einem universellen Objekt (Zeichenobjekt) besteht.
Schauen wir uns ein Beispiel für eine einfache Struktur des Enzyklopädie -Musters an:
/ *** Brief*/ Public Class Letter {privater Zeichenfolge Name; öffentlicher Brief (Zeichenfolge Name) {this.name = name; } public String getName () {return name; }} / ** * Eine Xiangyuan -Fabrik (Singleton -Fabrik), die Briefobjekte erzeugt */ öffentliche Klasse LetterFactory {private map <String, Buchstabe> Karte; private statische Buchstabenfaktory Instance = new LetterFactory (); private LetterFactory () {map = new HashMap <String, Buchstabe> (); } public static LetterFactory getInstance () {return Instance; } public void add (buchstaben) {if (letter! = null &&! map.containsKey (borrese.getName ()) {map.put (borrese.getName (), bild); } System.out.println ("map.size ====" + map.size ()); } public Letter get (String name) {return map.get (name); }} public class test {public static void main (String [] args) {LetterFactory Factory = LetterFactory.getInstance (); String Word = "Leichtigkeit"; addletterByName (Fabrik, Wort); GetLetter (Fabrik, Wort); } // Buchstabe Objekt statische void addletterByName (LetterFactory Factory, String Word) {for (char c: word.toarArray ()) {factory.add (neuer Buchstaben (c + ""); }} // Ausgabe von Buchstaben Objekt static void getLetter (Buchstabenfabrik, String Word) {for (char c: word.toCharArray ()) {System.out.println (factory.get (c + ""); }}}Drucken:
map.size====1 map.size====2 map.size====2 map.size=====3 map.size====4 map.size====5 map.size=====5 flyweight.Letter@3343c8b3 flyweight.Letter@272d7a10 flyweight.Letter@3343c8b3 flyweight.letter@1aa8c488 flyweight.letter@3dfeca64 flyweight.letter@22998b08 flyweight.letter@1aa8c488