[JAVA] Modèle de poids mouche

Flyweight Pattern Réutiliser sans plusieurs instances pour être compatible avec la mémoire

Cette page décrit les éléments suivants ・ Configuration de base de Flyweight ·La mise en oeuvre

Design Pattarm MENU

Configuration de base Flyweight

classe Explication
factory.class sam.Ne dupliquez pas les instances de classe
sam.class Classe cible pour laquelle l'utilisateur crée une instance
user(Main.class) factory.sam via la classe.Créer une instance de classe

Structure de base de factory.class et sam.class

factory.class


class factory{
  Map map;
  sam getSam(){}
}

En usine, l'instance sam () générée est conservée dans Map Gérez pour éviter la duplication

sam.class


class sam{
  String s;
  sam(){}
}

sam () enregistre String s dans le constructeur

Mettre en œuvre la structure de base ci-dessous

factory.class


class factory{
  Map map = new HashMap();        // sam()Stocker l'instance
  sam getSam(String key){         
      sam s = (sam) map.get(key); //Obtenir une instance de la carte
      if(s != null){return s;}    //S'il y a une instance dans la carte, transmettez-la à l'utilisateur
      sam sm= new sam(key);       //S'il n'y a pas d'instance dans la carte, créez une instance
      map.put(key,sm);            //Après avoir créé une nouvelle instance, enregistrez-la dans la carte
      return sm;                  //Publier une instance pour l'utilisateur
  }
}

sam.class


class sam{
  String s;
  sam(String s){}
}

la mise en oeuvre

Il y a un problème avec le code ci-dessus. La fabrique possède une carte et gère l'instance sam (). Lorsque l'usine elle-même est transformée en plusieurs interfaces, différentes cartes seront créées par ce numéro.

Ensuite, vous ne pouvez pas gérer correctement l'instance sam () Alors réglons factory.class sur singleton (Il ne peut pas empêcher la duplication de Map par lui-même, mais pour le moment, en tant que processus)

Implémentez également une méthode print () qui imprime le contenu de la carte pour une vérification plus approfondie

factory.class


class factory{Map map = new HashMap();
  private static final factory fac = new factory();

  private factory(){}
  static  factory getInstance(){
          return fac;
  }

  sam getSam(String key){
      sam s = (sam) map.get(key);
      if( s != null){return s;}
      sam sm = new sam(key);
      map.put(key,sm);
      return sm;
  }

  void print(){
    Iterator it = map.keySet().iterator();
    while(it.hasNext()){
      sam s = (sam) map.get(it.next());
      System.out.println(s+":"+s.get());
    }
  }
}

sam.class


class sam{
  private String s;
  sam(String s){this.s=s;}
  String get(){return this.s;}
}

user(Main.class)


public static void main(String[] args){
  factory f = factory.getInstance();
  f.getSam("a");
  f.getSam("b");
  f.getSam("c");
  f.getSam("a");
  f.print();
}}

Recommended Posts

Modèle de poids mouche
Modèle de conception ~ Poids mouche ~
Modèle de prototype
Motif de souvenir
Motif médiateur
Modèle d'itérateur
Motif composite
Modèle de constructeur
Modèle de pont
Modèle de commande
Modèle de constructeur
Modèle de stratégie
Modèle d'itérateur
Modèle de visiteur
Modèle de proxy
Motif composite
Motif singleton
Motif singleton
Modèle de prototype
Modèle de façade
Motif décorateur
Motif décorateur
Modèle de médiateur
Motif de façade
Modèle de visiteur
Modèle de pont
Modèle de conception ~ Constructeur ~
[Java] Modèle de stratégie
Modèle de conception ~ Visiteur ~
Modèle de conception Java
modèle de rappel java
Modèle de conception ~ Proxy ~
Modèle de conception ~ État ~
Modèle de méthode d'usine
Modèle de conception ~ Singleton ~
Modèle de conception ~ Composite ~
Modèle de conception (2): constructeur
Modèle de conception (1): AbstractFactory
[Java] Motif singleton
Modèle de conception ~ Commande ~
Modèle d'usine abstraite
Modèle de conception ~ Itérateur ~
Modèle de conception ~ Façade ~
Modèle de conception ~ Pont ~
Modèle de conception ~ Médiateur ~
Modèle de conception ~ Décorateur ~
Modèle de modèle de méthode
Modèle de conception ~ Interprète ~
Modèle de méthode d'usine
Modèle de conception ~ Observateur ~
Modèle de conception ~ Prototype ~
[Java] Modèle d'adaptateur
Modèle de conception ~ Memento ~
Modèle de conception ~ Adaptateur ~
Mémo de modèle Java