Présentation des modèles de conception de [GoF](https://ja.wikipedia.org/wiki/Gang of for _ (Information Engineering)) ["Introduction aux modèles de conception appris dans le langage Java augmenté et révisé"]( https://www.amazon.co.jp/ Édition révisée supplémentaire Introduction aux modèles de conception appris en langage Java-Yuki-Hiroshi / dp / 4797327030 / ref = pd_lpo_sbs_14_t_0? _ Encoding = UTF8 & psc = 1 & refRID = 2ZE4GPYNN55JGDR5QMHP) Je vais résumer sur.
Traduit en japonais, il s'agit d'une seule carte de Trump, ce qui signifie qu'il n'y en a qu'une dans l'ensemble. Pour cette raison, le ** modèle qui garantit qu'il n'y a qu'une seule instance dans tout le système ** est appelé le ** modèle Singleton **.
Les classes qui apparaissent dans le diagramme de classes ci-dessous sont utilisées dans le modèle Singleton. Cependant, il n'existe qu'une seule des classes Singleton.
À titre d'exemple concret, l'explication sera basée sur la classe singleton et la classe d'exécution.
Singleton.java
package singleton;
public class Singleton {
// 1.champ statique(Variable de classe)Définir singleton comme
private static Singleton singleton = new Singleton();
// 2.constructeur privé
private Singleton() {
System.out.println("Instanciation réussie");
}
// 3.Renvoyer une instance de singleton
public static Singleton getInstance() {
return singleton;
}
}
Les points sont les trois points suivants.
** 1. ** singleton
est défini comme une variable de classe privée.
** 2. ** Le constructeur est privé et ne peut pas être appelé par d'autres classes. (ne peut pas nouveau)
** 3. ** Définit une méthode getInstance ()
qui renvoie une instance singleton.
Je vais donner une explication supplémentaire.
Tout d'abord, la classe externe appelle la méthode publique getInstance ()
.
Si elle est appelée pour la première fois à ce moment-là, la classe Singleton sera initialisée et une instance de la classe Singleton ne sera créée qu'une seule fois à ce moment-là.
Après cela, lorsque la méthode getInstance ()
est appelée, l'instance déjà créée de la classe Singleton est renvoyée.
La sortie est effectuée dans le constructeur afin que vous puissiez voir que l'instance a été créée avec succès, mais elle n'est généralement pas nécessaire.
getInstance ()
deux fois pour vous assurer que vous obtenez la même instance.Main.java
package singleton;
public class Main {
public static void main(String[] args) {
System.out.println("***Démarrer la classe d'exécution***");
Singleton obj1 = Singleton.getInstance();
Singleton obj2 = Singleton.getInstance();
if (obj1 == obj2) {
System.out.println("obj1 is obj2");
} else {
System.out.println("obj1 is not obj2");
}
System.out.println("***Fin de la classe d'exécution***");
}
}
Le résultat de l'exécution de Main.java
est le suivant.
ʻObj1 is obj2` est affiché, et vous pouvez confirmer que vous pouvez obtenir la même instance.
Résultat d'exécution
***Démarrer la classe d'exécution***
Instanciation réussie
obj1 is obj2
***Fin de la classe d'exécution***
En utilisant le modèle Singleton, vous pouvez être assuré qu'il n'y a qu'une seule instance dans l'ensemble de votre système. En faisant cela, vous pouvez empêcher plusieurs instances de s'emmêler et de provoquer des bogues inattendus.
Vous avez découvert le modèle Singleton, qui garantit qu'il n'y a qu'une seule instance. L'exemple de code est téléchargé ci-dessous, veuillez donc vous y référer si vous le souhaitez.
En outre, d'autres modèles de conception sont résumés ci-dessous, veuillez donc vous y référer également.
Recommended Posts