Un modèle qui garantit qu'il n'y a qu'une seule instance.
Le rôle de Singleton a une méthode statique pour obtenir une seule instance. Cette méthode renvoie toujours la même instance.
package singleton;
public class Singleton {
private static Singleton singleton = new Singleton();
//Interdire d'appeler le constructeur depuis l'extérieur de la classe en rendant le constructeur privé
private Singleton() {
System.out.println("Créé une instance");
}
//Fournir une méthode statique qui renvoie une instance
public static Singleton getInstance() {
return singleton;
}
}
package singleton;
public class Main {
public static void main(String[] args) {
System.out.println("Start");
Singleton obj1 = Singleton.getInstance();
Singleton obj2 = Singleton.getInstance();
if (obj1 == obj2) {
System.out.println("Même instance");
} else {
System.out.println("Pas la même instance");
}
System.out.println("End");
}
}
// Start
//Créé une instance
//Même instance
// End
package singleton;
public class TicketMaker {
private static TicketMaker ticketMaker = new TicketMaker();
private int ticket = 1000;
private TicketMaker() {
}
public static TicketMaker getInstance() {
return ticketMaker;
}
//Accorder synchronisé pour fonctionner correctement même lorsqu'il est appelé à partir de plusieurs threads
public synchronized int getNextTiketNumber() {
return ticket++;
}
}
package singleton;
public class Triple {
private static Triple[] triples = new Triple[] {
new Triple(0),
new Triple(1),
new Triple(2),
};
private int id;
private Triple(int id) {
System.out.println("The instance" + id + " is created");
this.id = id;
}
public static Triple getInstance(int id) {
return triples[id];
}
public String toString() {
return "[Triple id = " + id + "]";
}
}
package singleton;
public class Main {
public static void main(String[] args) {
System.out.println("Start");
for (int i = 0; i < 9; i++) {
Triple triple = Triple.getInstance(i % 3);
System.out.println(i + ":" + triple);
}
System.out.println("End");
}
}
// Start
// The instance0 is created
// The instance1 is created
// The instance2 is created
// 0:[Triple id = 0]
// 1:[Triple id = 1]
// 2:[Triple id = 2]
// 3:[Triple id = 0]
// 4:[Triple id = 1]
// 5:[Triple id = 2]
// 6:[Triple id = 0]
// 7:[Triple id = 1]
// 8:[Triple id = 2]
// End
Recommended Posts