Table des matières Memento est intéressant. C'est l'un de mes films préférés.
Ce film raconte l'histoire d'un homme qui n'a que 10 minutes de mémoire en raison d'un obstacle causé par un incident, luttant pour découvrir le mystère de l'incident et les circonstances dans lesquelles il se trouve actuellement. Il a inscrit sur son corps un événement important qu'il ne faut pas oublier car il ne dispose que de 10 minutes de mémoire, afin de s'informer 10 minutes plus tard.
Le motif a-t-il pour but de sauvegarder l'état de l'objet à un moment donné? Les membres privés sont essentiellement inaccessibles de l'extérieur. Cependant, je pense qu'il existe de nombreuses situations dans lesquelles vous souhaitez enregistrer l'état entier d'un objet particulier afin que divers logiciels puissent revenir complètement à l'état précédent avec les touches ctrl (ou commande) + z.
Je comprends que ce modèle est utilisé dans de tels cas. Il semble qu'il y avait un modèle de commande dans un modèle similaire ...
Sans interrompre l'encapsulation, l'état interne de l'objet est capturé et externalisé afin que l'objet puisse être renvoyé à cet état ultérieurement.
・ Memento Une classe qui enregistre l'état d'un objet -Originateur Un objet pour lequel vous souhaitez enregistrer l'état à un certain moment. Créez un objet memento et utilisez l'objet memento pour le restaurer. · Coffre-fort d’objets Gardien Memento
Implémentez un exemple de programme qui ressemble à la création de données de sauvegarde de jeu.
Enregistrer la classe de données Enregistrez une capture de votre niveau, de votre argent et de votre expérience à tout moment.
SaveData.kt
package memento
class SaveData(val level: Int, val gold: Int, val point: Int) {
fun show() {
println("niveau:$niveau Possession:$Expérience d'or:$point")
}
}
Informations en cours de lecture
Game.kt
package memento
class Game(private var level: Int, private var gold: Int, private var point: Int) {
fun show() {
println("niveau:$niveau Possession:$Expérience d'or:$point")
}
/**
*Vaincu l'ennemi
*/
fun enemyDown(enemyLevel: Int) {
point += enemyLevel
if (point >= 10) {
level += point / 10
point %= 10
}
gold += enemyLevel
}
/**
*Obtenir l'état actuel
*/
fun getData(): SaveData {
return SaveData(level, gold, point)
}
}
MemoryCard.kt
package memento
class MemoryCard {
private val memory = ArrayList<SaveData>()
/**
*sauvegarder
*/
fun save(data: SaveData) {
memory.add(data)
}
/**
*Charger (restaurer)
*/
fun load(index: Int): Game {
val data = memory[index]
return Game(data.level, data.gold, data.point)
}
}
Client.kt
package memento
class Client {
init {
//Fait référence à une carte mémoire
val memoryCard = MemoryCard()
//Début du jeu
var game = Game(1, 0, 0)
//Vaincre l'ennemi
game.enemyDown(1)
game.enemyDown(5)
game.enemyDown(6)
//enregistrer
memoryCard.save(game.getData())
//État actuel
game.show()
//Vaincre l'ennemi
game.enemyDown(4)
game.enemyDown(2)
game.enemyDown(8)
//enregistrer
memoryCard.save(game.getData())
//État actuel
game.show()
//Revenir à l'état enregistré à l'origine car il y avait un élément que vous n'avez pas pu acquérir
game = memoryCard.load(0)
//État actuel
game.show()
}
}
[out-put]
Niveau: 2 Possession: 12 Expérience: 2
Niveau: 3 Possession: 26 Expérience: 6
Niveau: 2 Possession: 12 Expérience: 2
c'est tout
Recommended Posts