Ein Muster, das garantiert, dass es nur eine Instanz gibt.
Die Rolle von Singleton verfügt über eine statische Methode zum Abrufen einer einzelnen Instanz. Diese Methode gibt immer dieselbe Instanz zurück.
package singleton;
public class Singleton {
private static Singleton singleton = new Singleton();
//Verbieten Sie das Aufrufen des Konstruktors von außerhalb der Klasse, indem Sie den Konstruktor privat machen
private Singleton() {
System.out.println("Instanz erstellt");
}
//Geben Sie eine statische Methode an, die eine Instanz zurückgibt
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("Gleiche Instanz");
} else {
System.out.println("Nicht die gleiche Instanz");
}
System.out.println("End");
}
}
// Start
//Instanz erstellt
//Gleiche Instanz
// End
package singleton;
public class TicketMaker {
private static TicketMaker ticketMaker = new TicketMaker();
private int ticket = 1000;
private TicketMaker() {
}
public static TicketMaker getInstance() {
return ticketMaker;
}
//Grant synchronisiert, damit es auch dann ordnungsgemäß funktioniert, wenn es von mehreren Threads aufgerufen wird
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