Notes d'apprentissage Java
SingletonClass.java
package com.company;
public class SingletonClass {
private static SingletonClass instance = new SingletonClass();
private SingletonClass() {}
public static SingletonClass getInstance() {
return instance;
}
}
Main.java
package com.company;
public class Main {
public static void main(String[] args) {
SingletonSample obj = SingletonSample.getInstance();
}
}
getter
(contrairement à C #, il n'y a pas de syntaxe de propriété)privés
. (Identique à C #)getInstance ()
est utilisé à partir du multithreadingComme mentionné ci-dessus, les instances sont créées lorsque la classe est utilisée pour la première fois, pas lorsqu'elle est chargée, donc si vous autorisez les appels multithread à getInstance ()
, vous aurez plusieurs instances. Peut être créé.
Ce qui suit peut être mentionné comme méthode de contre-mesure.
Utiliser le modificateur synchronisé
class Singleton {
static Singleton instance = null;
public static synchronized Singleton getInstace() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
Initialize-on-Demand_Holder_Modèle de classe
class Singleton {
private Singleton(){}
public static Singleton getInstace() {
return SingletonHolder.INSTANCE;
}
private static class SingletonHolder {
private static final Singleton INSTANCE = new Singleton();
}
}
référence Modèle de conception "Singleton" --Qiita Ne créez pas plusieurs instances de l'objet MSC07-J. Singleton
[C # 6.0 ~] Implémentation du modèle singleton --Qiita
Java Singleton Design Pattern-Qiita Ne créez pas plusieurs instances de l'objet MSC07-J. Singleton
Recommended Posts