** Table des matières ** Ce modèle permet aux autres objets qui le surveillent de faire quelque chose en même temps lorsque les propriétés d'un objet sont mises à jour.
C'est comme une image qui notifie à l'objet surveillé que l'objet mis à jour a été mis à jour. Les données en direct des composants d'architecture Android sont exactement cela.
Définissez une dépendance un-à-plusieurs entre les objets afin que lorsqu'un objet change d'état, tous les objets dépendants soient automatiquement notifiés et mis à jour.
-Subject Classe abstraite observée -Observer Classe abstraite que vous souhaitez surveiller ・ ConcreteSubject La classe de béton à surveiller -ConcreteObserver La classe concrète que vous souhaitez surveiller
Nous mettrons en œuvre un exemple de programme qui sera automatiquement mis à jour lors de la mise à jour de l'application installée sur le smartphone. Le play store est le sujet et le smartphone est l'observateur. Je n'implémente pas de classes abstraites parce que c'est ennuyeux.
C'est un magasin de jeux.
PlayStore.kt
package observer
class PlayStore {
interface UpdateListener {
fun update(latestVersion: Int)
}
private val listeners = ArrayList<UpdateListener>()
fun update(latestVersion: Int) {
println("Exemple d'application${latestVersion}Il a été mis à jour en.")
listeners.forEach {
it.update(latestVersion)
}
}
fun addListener(listener: UpdateListener) {
listeners.add(listener)
}
}
Implémentez deux classes à observer afin que vous puissiez facilement ressentir l'effet de ce modèle.
Premier utilisateur qui a installé l'exemple d'application
SnakeSmartPhone.kt
package observer
class SnakeSmartPhone(playStore: PlayStore) {
init {
playStore.addListener(object: PlayStore.UpdateListener {
override fun update(latestVersion: Int) {
println("Application pour smartphone de Snake${latestVersion}L'échantillon a été mis à jour en.")
}
})
}
}
Deuxième utilisateur avec l'exemple d'application installé
Raiden.kt
package observer
class RaidenSmartPhone(playStore: PlayStore) {
init {
playStore.addListener(object: PlayStore.UpdateListener {
override fun update(latestVersion: Int) {
println("Exemple d'application pour smartphone de Raiden${latestVersion}Il a été mis à jour en.")
}
})
}
}
Client.kt
package observer
class Client {
init {
val playStore = PlayStore()
SnakeSmartPhone(playStore)
RaidenSmartPhone(playStore)
playStore.update(1)
playStore.update(2)
}
}
[out-put]
L'exemple d'application a été mis à jour à 1.
L'exemple d'application pour smartphone de Snake a été mis à jour à 1.
L'exemple d'application pour smartphone de Raiden a été mis à jour à 1.
L'exemple d'application a été mis à jour vers 2.
L'exemple d'application pour smartphone de Snake a été mis à jour à 2.
L'exemple d'application pour smartphone de Raiden a été mis à jour à 2.
Chaque fois que vous mettez à jour l'application Play Store, le smartphone qui l'a installée est automatiquement mis à jour.
c'est tout
Recommended Posts