** Inhaltsverzeichnis ** Mit diesem Muster können andere Objekte, die es überwachen, gleichzeitig etwas tun, wenn die Eigenschaften eines Objekts aktualisiert werden.
Es ist ein Bild, das das überwachte Objekt benachrichtigt, dass das aktualisierte Objekt aktualisiert wurde. Live-Daten von Android-Architekturkomponenten sind genau das.
Definieren Sie eine Eins-zu-Viele-Abhängigkeit zwischen Objekten, damit alle abhängigen Objekte automatisch benachrichtigt und aktualisiert werden, wenn sich der Status eines Objekts ändert.
-Subjekt Beobachtete abstrakte Klasse -Observer Abstrakte Klasse, die Sie überwachen möchten ・ ConcreteSubject Die zu überwachende Betonklasse -ConcreteObserver Die konkrete Klasse, die Sie überwachen möchten
Wir werden ein Beispielprogramm implementieren, das automatisch aktualisiert wird, wenn die auf dem Smartphone installierte Anwendung aktualisiert wird. Der Play Store ist das Thema und das Smartphone ist der Beobachter. Ich implementiere keine abstrakten Klassen, weil es nervt.
Es ist ein Spielladen.
PlayStore.kt
package observer
class PlayStore {
interface UpdateListener {
fun update(latestVersion: Int)
}
private val listeners = ArrayList<UpdateListener>()
fun update(latestVersion: Int) {
println("Beispiel App${latestVersion}Es wurde aktualisiert auf.")
listeners.forEach {
it.update(latestVersion)
}
}
fun addListener(listener: UpdateListener) {
listeners.add(listener)
}
}
Implementieren Sie zwei zu beobachtende Klassen, damit Sie die Wirkung dieses Musters leicht spüren können.
Erster Benutzer, der die Beispiel-App installiert hat
SnakeSmartPhone.kt
package observer
class SnakeSmartPhone(playStore: PlayStore) {
init {
playStore.addListener(object: PlayStore.UpdateListener {
override fun update(latestVersion: Int) {
println("Snakes Smartphone-App${latestVersion}Das Beispiel wurde auf aktualisiert.")
}
})
}
}
Zweiter Benutzer mit installierter Beispiel-App
Raiden.kt
package observer
class RaidenSmartPhone(playStore: PlayStore) {
init {
playStore.addListener(object: PlayStore.UpdateListener {
override fun update(latestVersion: Int) {
println("Raidens Smartphone-Beispiel-App${latestVersion}Es wurde aktualisiert auf.")
}
})
}
}
Client.kt
package observer
class Client {
init {
val playStore = PlayStore()
SnakeSmartPhone(playStore)
RaidenSmartPhone(playStore)
playStore.update(1)
playStore.update(2)
}
}
[out-put]
Die Beispiel-App wurde auf 1 aktualisiert.
Die Smartphone-Beispiel-App von Snake wurde auf 1 aktualisiert.
Raidens Smartphone-Beispiel-App wurde auf 1 aktualisiert.
Die Beispiel-App wurde auf 2 aktualisiert.
Die Smartphone-Beispiel-App von Snake wurde auf 2 aktualisiert.
Raidens Smartphone-Beispiel-App wurde auf 2 aktualisiert.
Jedes Mal, wenn Sie die Play Store-App aktualisieren, wird das Smartphone, auf dem sie installiert ist, automatisch aktualisiert.
das ist alles
Recommended Posts