** Inhaltsverzeichnis ** Das letzte Muster für die Erzeugung ist eine einzelne Tonne. Ich denke, das ist ein Muster, mit dem jeder vertraut ist. Ich habe das Gefühl, dass das erste Designmuster, das ich gelernt habe, eine einzelne Tonne war.
Klassen, die DB-Verbindungen bereitstellen, und Klassen, die Assets abrufen, werden im Allgemeinen in diesem Muster implementiert. Garantiert die Eindeutigkeit einer Instanz dieser Klasse im Programm.
Es garantiert, dass es nur eine Instanz für eine Klasse gibt, und bietet eine globale Möglichkeit, darauf zuzugreifen.
· Eine Klasse, in der nur eine Singleton-Instanz erstellt wird
Wenn Sie dieses Muster mit Kotlin codieren, wird es in einer einfachen Form vorliegen, wie unten gezeigt. Ich bin mir also nicht sicher, also werde ich es mit Java codieren.
SingletonObject.kt
package singleton
object SingletonObject {
var str = ""
fun print() {
println("Ausgabeergebnis:$str")
}
}
Erstellen Sie Bilder und Musikdateien von mehreren Bildschirmen über Singleton-Objekte.
Singleton-Objekt
JavaSingletonObject.java
package singleton;
public class JavaSingletonObject {
/**
*Als statisch definiert und die Instanz der eigenen Klasse eindeutig machen
*/
public static JavaSingletonObject instance = new JavaSingletonObject();
private String address = "/assets/temp";
enum Assets {
IMAGE1("image_1"),
IMAGE2("image_2"),
AUDIO1("audio_1"),
AUDIO2("audio_2");
private final String value;
Assets(final String value) {
this.value = value;
}
}
/**
*Definieren Sie den Konstruktor als privat, damit keine neue Instanz erstellt werden kann.
*/
private JavaSingletonObject(){
System.out.println("Verbindung:" + address);
}
public String getAssets(Assets target) {
System.out.println("Materialerfassung mit Singleton-Objekt:" + target.value);
return target.value;
}
}
Bildschirm 1 Klasse
DisplayOne.kt
package singleton
class DisplayOne {
fun draw() {
println("In User1${JavaSingletonObject.instance.getAssets(JavaSingletonObject.Assets.IMAGE1)}Zeichnen!!")
}
}
Bildschirm 2 Klasse
DisplayTwo.kt
package singleton
class DisplayTwo {
fun start() {
println("In User2${JavaSingletonObject.instance.getAssets(JavaSingletonObject.Assets.AUDIO1)}abspielen!!")
}
}
Bildschirmverwaltungsklasse
Manager.kt
package singleton
class Manager {
init {
DisplayOne().draw()
DisplayTwo().start()
}
}
Damit ist die Implementierung des Singleton-Musters abgeschlossen. Dieser Prozess sollte nur einmal ausgeführt werden, da die Verbindung zu Assets im Konstruktor der Klasse "JavaSingletonObject" hergestellt wird.
Da der Konstruktor als privat definiert ist, ist es auch nicht möglich, eine neue Instanz der Klasse zu erstellen, und die Eindeutigkeit ist garantiert.
[output]
Verbindung:/assets/temp
Materialerfassung mit Singleton-Objekt: Bild_1
Bild in User1_Zeichne 1!!
Materialerfassung mit Singleton-Objekt: Audio_1
Audio in User2_Spielen Sie 1!!
Recommended Posts