In diesem Artikel lernen Sie anhand von Beispielen Objektdeklarationen (Singletons) und Objektausdrücke kennen.
Objekterklärungen
Singleton ist ein objektorientiertes Muster, bei dem eine Klasse nur eine Instanz (Objekt) haben kann.
Sie arbeiten beispielsweise mit einer Anwendung mit SQL-Datenbank-Backend. Sie möchten einen Verbindungspool erstellen, um auf die Datenbank zuzugreifen, während Sie dieselbe Verbindung für alle Clients wiederverwenden. Zu diesem Zweck können Sie die Verbindung über die Singleton-Klasse erstellen, sodass jeder Client dieselbe Verbindung erhält.
Kotlin bietet eine einfache Möglichkeit, Singletons mithilfe der Objektdeklarationsfunktion zu erstellen. Dafür wird das Objektschlüsselwort verwendet.
Objekt SingletonExample (… // Hauptteil der Klasse…)
Der obige Code kombiniert eine Klassendeklaration und eine Deklaration einer einzelnen Instanz SingletonExample der Klasse.
Eine Objektdeklaration kann Eigenschaften, Methoden usw. enthalten. Sie dürfen jedoch keine Konstruktoren haben (was Sinn macht). Warum?
Ähnlich wie bei Objekten einer normalen Klasse können Sie mithilfe der .
Notation Methoden aufrufen und auf Eigenschaften zugreifen .
Beispiel: Objektdeklaration
object Test ( private var a: Int = 0 var b: Int = 1 fun makeMe12(): Int ( a = 12 return a ) ) fun main(args: Array) ( val result: Int result = Test.makeMe12() println("b = $(Test.b)") println("result = $result") )
Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:
b = 1 Ergebnis = 12
Die Objektdeklaration kann auf ähnliche Weise wie normale Klassen von Klassen und Schnittstellen erben.
Singletons und Abhängigkeitsinjektion
Objektdeklarationen können manchmal nützlich sein. Sie sind jedoch nicht ideal für große Softwaresysteme, die mit vielen anderen Teilen des Systems interagieren.
Empfohlene Lektüre: Abhängigkeitsinjektion & Singleton-Entwurfsmuster
Kotlin-Objektausdrücke
Das Objektschlüsselwort kann auch zum Erstellen von Objekten einer anonymen Klasse verwendet werden, die als anonyme Objekte bezeichnet werden. Sie werden verwendet, wenn Sie ein Objekt mit einer geringfügigen Änderung einer Klasse oder Schnittstelle erstellen müssen, ohne eine Unterklasse dafür zu deklarieren. Beispielsweise ,
window.addMouseListener (Objekt: MouseAdapter () (Spaß überschreiben mouseClicked (e: MouseEvent) (//…) Spaß überschreiben mouseEntered (e: MouseEvent) (//…)))
(Das Beispiel stammt von der offiziellen Kotlin-Dokumentenseite.)
Hier wird ein anonymes Objekt als Erweiterung der MouseAdapter-Klasse deklariert. Das Programm überschreibt zwei MouseAdapter
Methoden: mouseClicked()
und mouseEntered()
.
Bei Bedarf können Sie dem anonymen Objekt einen Namen zuweisen und in einer Variablen speichern. Beispielsweise,
val obj = Objekt: MouseAdapter () (Spaß überschreiben mouseClicked (e: MouseEvent) (//…) Spaß überschreiben mouseEntered (e: MouseEvent) (//…))
Beispiel: Kotlin-Objektausdruck
open class Person() ( fun eat() = println("Eating food.") fun talk() = println("Talking with people.") open fun pray() = println("Praying god.") ) fun main(args: Array) ( val atheist = object : Person() ( override fun pray() = println("I don't pray. I am an atheist.") ) atheist.eat() atheist.talk() atheist.pray() )
Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:
Essen essen. Mit Leuten reden. Ich bete nicht Ich bin ein Atheist.
Hier wird ein anonymes Objekt in der Variablen atheist gespeichert, die die Person-Klasse mit der pray()
Methode implementiert, die überschrieben wird.
Wenn Sie eine Klasse implementieren, die einen Konstruktor zum Deklarieren eines anonymen Objekts hat, müssen Sie die entsprechenden Konstruktorparameter übergeben. Beispielsweise,
open class Person(name: String, age: Int) ( init ( println("name: $name, age: $age") ) fun eat() = println("Eating food.") fun talk() = println("Talking with people.") open fun pray() = println("Praying god.") ) fun main(args: Array) ( val atheist = object : Person("Jack", 29) ( override fun pray() = println("I don't pray. I am an atheist.") ) atheist.eat() atheist.talk() atheist.pray() )
Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:
Name: Jack, Alter: 29 Essen. Mit Leuten reden. Ich bete nicht Ich bin ein Atheist.