Erlernen des Konzepts der Schnittstelle und der Wiederverwendbarkeit von Objekten, die für die Objektorientierung wichtig sind ["Einführung in in Java-Sprache erlernte Entwurfsmuster"](https://www.amazon.co.jp/%E5%A2%97% E8% A3% 9C% E6% 94% B9% E8% A8% 82% E7% 89% 88Java% E8% A8% 80% E8% AA% 9E% E3% 81% A7% E5% AD% A6% E3% 81% B6% E3% 83% 87% E3% 82% B6% E3% 82% A4% E3% 83% B3% E3% 83% 91% E3% 82% BF% E3% 83% BC% E3% 83% B3% E5% 85% A5% E9% 96% 80-% E7% B5% 90% E5% 9F% 8E-% E6% B5% A9 / dp / 4797327030 / ref = sr_1_1? __Mk_ja_JP =% E3% 82% AB % E3% 82% BF% E3% 82% AB% E3% 83% 8A & Schlüsselwörter = Java% E8% A8% 80% E8% AA% 9E% E3% 81% A7% E5% AD% A6% E3% 81% B6 % E3% 83% 87% E3% 82% B6% E3% 82% A4% E3% 83% B3% E3% 83% 91% E3% 82% BF% E3% 83% BC% E3% 83% B3% E5 Ich habe% 85% A5% E9% 96% 80 & qid = 1559563427 & s = gateway & sr = 8-1) kennengelernt und mich entschieden, in Kotlin zu schreiben, während ich in Java war. Dieses Mal werde ich Singleton zusammenfassen.
Singleton ist ein Begriff, der sich auf eine Menge bezieht, die nur ein Element enthält und als Muster definiert ist, das die folgenden Rollen spielt.
In dieser Klasse wird das als statisches Feld definierte Singleton-Mitglied mit einer Instanz der Singleton-Klasse initialisiert, beim Laden der Klasse jedoch nur einmal. Darüber hinaus wird garantiert, dass nur eine Instanz erstellt wird, indem der Zugriff von außen mit privat verhindert wird.
Für Kotlin gibt es keine Definition von statisch, sondern ein Begleitobjekt.
Referenz: Wie soll ich ein statisches Mitglied in Kotlin schreiben?
Wenn Sie "Companion-Objekt" definieren und dekompilieren, wird von Getter / Setter über das Companion-Objekt darauf zugegriffen. Verwenden Sie also const oder @JvmField. Da const jedoch nur ein primitiver Typ oder ein String-Typ ist, wird @JvmField für einen nicht primitiven Typ angegeben. Wenn @JvmField für einen primitiven Typ angegeben wird, wird der Anfangswert zweimal zugewiesen, sodass er ordnungsgemäß verwendet werden muss. @JvmField wird jedoch verwendet, um dem Feld Sichtbarkeit zu verleihen, sodass es in diesem privaten Bereich nicht verwendet werden kann.
Referenz: [Kotlin] [Java] Kotlin Java-Vergleichsnotiz Calling Kotlin from Java
__ Nachtrag: @sdkei Vielen Dank für Ihre Bewertung! __ __
Nach Erhalt einer Überprüfung wird gesagt, dass Kotlin mithilfe der Objektdeklaration einfacher implementiert werden kann, auch wenn es nicht wie oben beschrieben implementiert ist.
⇒Singleton2.kt
,SingletonSample2.kt
Referenz: Entwurfsmuster mit Kotlin Singleton Objektausdrücke und Deklarationen
Singleton.java
class Singleton {
private static Singleton singleton = new Singleton();
private Singleton() {
System.out.println("Instanz erstellt.");
}
public static Singleton getInstance() {
return singleton;
}
}
Singleton.kt
class Singleton {
init { println("Instanz erstellt.") }
companion object {
private val singleton = Singleton()
fun getInstance() = this.singleton
}
}
Singleton2.kt
object Singleton {
init { println("Instanz erstellt.") }
}
SingletonSample.java
public class SingletonSample {
public static void main(String[] args) {
System.out.println("Start.");
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
if (s1 == s2) {
System.out.println("s1 und s2 sind dieselbe Instanz.");
} else {
System.out.println("s1 und s2 sind nicht dieselbe Instanz.");
}
System.out.println("End.");
}
}
SingletonSample.kt
fun main(args: Array<String>) {
println("Start.")
val s1 = Singleton.getInstance()
val s2 = Singleton.getInstance()
if (s1 == s2) println("s1 und s2 sind dieselbe Instanz.")
else println("s1 und s2 sind nicht dieselbe Instanz.")
println("End.")
}
SingletonSample2.kt
fun main(args: Array<String>) {
println("Start.")
val s1 = Singleton
val s2 = Singleton
if (s1 == s2) println("s1 und s2 sind dieselbe Instanz.")
else println("s1 und s2 sind nicht dieselbe Instanz.")
println("End.")
}
Ausführungsergebnis
Start.
Instanz erstellt.
s1 und s2 sind dieselbe Instanz.
End.
Es wurde festgestellt, dass das als statisches Feld definierte Singleton-Mitglied beim Laden der Singleton-Klasse nur einmal initialisiert wird und privat ist, um externen Zugriff zu verhindern und sicherzustellen, dass nur eine Instanz erstellt wird. Es ist.
Ich habe auch erfahren, dass die oben genannten Garantien für Implementierungen von Vorteil sind, die eindeutig sein müssen, z. B. Seriennummern.
Ich habe die folgenden Punkte über Kotlin gelernt
Es war sehr leicht zu lesen und zu verstehen, wenn man sich auf Folgendes bezog.
Wie soll ich ein statisches Mitglied in Kotlin schreiben? [Kotlin] [Java] Kotlin Java-Vergleichsnotiz Calling Kotlin from Java Entwurfsmuster mit Kotlin Singleton Objektausdrücke und Deklarationen
Recommended Posts