Cet article décrit le mode de plaisir du modèle de conception Java. Partagez-le pour votre référence, comme suit:
Expliquez le concept: c'est-à-dire s'il y a plusieurs objets identiques dans un système, alors partagez simplement une copie, et il n'est pas nécessaire d'instancier un objet pour chacun. Par exemple, dans un système de texte, chaque lettre est définie comme un objet, il y a donc 52 lettres supérieures et minuscules, donc 52 objets doivent être définis. S'il y a un texte de 1 m, il y a tellement de lettres. Si chaque lettre définit un objet, la mémoire aurait explosé il y a longtemps. Ensuite, si chaque lettre partage un objet, cela économisera grandement des ressources.
En mode Flyweight, comme divers objets doivent être générés, le mode d'usine apparaît souvent en mode Flyweight. L'état interne du poids mouche est utilisé pour partager. Flyweight Factory est responsable du maintien d'un pool de stockage d'objets (piscine de poids mouche) pour stocker des objets à l'état interne. Le mode Flyweight est un mode qui améliore l'efficacité et les performances du programme, ce qui accélérera considérablement la vitesse d'exécution du programme. Il existe de nombreuses occasions d'application, comme suit:
Définissez d'abord une classe de poids de mouche abstraite:
Package Flyweight; public abstrait class Flyweight {public abstrait void operation ();}Implémenter une classe spécifique:
Package Flyweight; public class ConcreteFlyweight étend Flyweight {private String String; public ConcreteFlyweight (String str) {String = str;} public void opération () {System.out.println ("Concrete --- Flyweight:" + String);}}Implémenter une classe de méthode d'usine:
Package Flyweight; import java.util.hashTable; public class FlyweightFactory {private hashTable FlyweightS = new HashTable (); // --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- nul){//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Cette classe de méthode d'usine est très critique, voici une explication détaillée:
Un hashtable est défini à 1 pour stocker chaque objet; Un objet à instanciation est sélectionné à 2, et l'objet à retourner à 6. S'il n'y a pas d'objet à sélectionner dans le hashtable, le poids de mouche variable est nul et un nouveau poids de mouche est généré pour être stocké dans le hashtable et l'objet est retourné.
Enfin, jetons un coup d'œil à l'appel du poids mouche:
Packweight Flyweight; Importer java.util.hashTable; public class FlyweightPattern {FlyweightFactory Factory = new FlyweightFactory (); Flyweight Fly1; Flyweight Fly2; Flyweight Fly3; Flyweight Fly4; Flyweight Fly5; FlyweTh factory.getflyweight ("google"); fly2 = factory.getflyweight ("QUTR"); fly3 = factory.getFlyweight ("google"); fly4 = factory.getflyweight ("google"); fly5 = factory.getflyweight ("google"); fly6 = factory.getflyweight ("google");} public Void showflyweight () {fly1.operation (); fly2.Operation (); fly3.Operation (); fly4.Operation (); fly5.Operation (); fly6.operation (); int objsize = factory.getFlyweightSize (); System.out.println ("objsize =" + objsize);} public static Void Main (String [] [String [] args) {System.out.println ("The Flyweight Pattern!"); FlyweightPattern fp = new FlyweightPattern (); fp.showflyweight ();}}Voici les résultats en cours:
Béton --- poids mouche: google
Béton --- poids mouche: QUTR
Béton --- poids mouche: google
Béton --- poids mouche: google
Béton --- poids mouche: google
Béton --- poids mouche: google
objsize = 2
Nous avons défini 6 objets, dont 5 sont les mêmes. Selon la définition du mode Flyweight, "Google" devrait partager un objet. Dans le nombre réel d'objets, nous pouvons voir qu'il n'y a que 2 objets.
Résumer:
Le mode Flyweight est si important car il peut vous aider à économiser beaucoup d'espace mémoire dans un système complexe. Dans la langue Java, le type de chaîne utilise le mode Encyclopedia. L'objet String est de type final et ne peut pas être modifié une fois qu'il est créé. En Java, des constantes de cordes sont présentes dans le pool constant. Java garantira qu'une constante de chaîne n'a qu'une seule copie dans le pool constant. String a = "ABC", où "ABC" est une constante de chaîne.
Ceux qui connaissent Java devraient connaître l'exemple suivant:
String a = "Hello"; String b = "Hello"; if (a == b) System.out.println ("OK"); elsesystem.out.println ("erreur");Le résultat de sortie est: OK. On peut voir que si la condition compare les adresses de deux A et B, ou si on peut dire qu'il s'agit d'un espace mémoire
Résumé de base: les objets qui peuvent être partagés, c'est-à-dire que les objets du même type renvoyés sont en fait la même instance. Lorsque le client a besoin d'un objet à générer, l'usine détectera si une instance de cet objet existe. S'il existe, renvoyez directement cette instance d'objet. S'il n'existe pas, créez et enregistrez-le. Cela a un sens du modèle singleton. Habituellement, la classe d'usine aura une variable de membre de type set pour enregistrer des objets, tels que le hashtable, le vecteur, etc. en Java, les pools de connexion de la base de données, les pools de threads, etc. sont des applications qui utilisent le mode Enyuan.
Pour plus de contenu lié à Java, les lecteurs qui sont intéressés par ce site peuvent afficher les sujets: "Tutoriel de structure de données Java et d'algorithme", "Résumé des conseils de nœud de Dom Operation Java", "Résumé du fichier Java et des conseils d'opération de répertoire" et "Résumé des conseils d'opération Java Cache"
J'espère que cet article sera utile à la programmation Java de tous.