Inhaltsverzeichnis Andenken ist interessant. Es ist einer meiner Lieblingsfilme.
Dieser Film handelt von einem Mann, der aufgrund eines durch einen Vorfall verursachten Hindernisses nur 10 Minuten Gedächtnis hat und Schwierigkeiten hat, das Geheimnis des Vorfalls und die Umstände herauszufinden, unter denen er sich derzeit befindet. Er schrieb ein wichtiges Ereignis in seinen Körper, das er nicht vergessen sollte, da er nur 10 Minuten Gedächtnis hat, um sich 10 Minuten später zu informieren.
Ist der Zweck des Musters, den Zustand des Objekts zu einem bestimmten Zeitpunkt zu speichern? Private Mitglieder sind grundsätzlich von außen nicht zugänglich. Ich denke jedoch, dass es viele Situationen gibt, in denen Sie den gesamten Status eines bestimmten Objekts speichern möchten, damit verschiedene Software mit Strg (oder Befehl) + Z-Tasten vollständig zum vorherigen Status zurückkehren können.
Ich verstehe, dass dieses Muster in solchen Fällen verwendet wird. Es scheint, dass es ein Befehlsmuster in einem ähnlichen Muster gab ...
Ohne die Kapselung zu unterbrechen, wird der interne Zustand des Objekts erfasst und ausgelagert, damit das Objekt später in diesen Zustand zurückversetzt werden kann.
・ Memento Eine Klasse, die den Status eines Objekts speichert -Originator Ein Objekt, für das Sie den Status zu einem bestimmten Zeitpunkt speichern möchten. Erstellen Sie ein Erinnerungsobjekt und stellen Sie es mit dem Erinnerungsobjekt wieder her. · Hausmeister Memento Objekttresor
Implementieren Sie ein Beispielprogramm, mit dem Sie Spielspeicherdaten erstellen möchten.
Datenklasse speichern Speichern Sie jederzeit eine Erfassung Ihres Levels, Geldes und Ihrer Erfahrung.
SaveData.kt
package memento
class SaveData(val level: Int, val gold: Int, val point: Int) {
fun show() {
println("Niveau:$Level Besitz:$Gold Erfahrung:$point")
}
}
Informationen werden gerade abgespielt
Game.kt
package memento
class Game(private var level: Int, private var gold: Int, private var point: Int) {
fun show() {
println("Niveau:$Level Besitz:$Gold Erfahrung:$point")
}
/**
*Besiegte den Feind
*/
fun enemyDown(enemyLevel: Int) {
point += enemyLevel
if (point >= 10) {
level += point / 10
point %= 10
}
gold += enemyLevel
}
/**
*Aktuellen Status abrufen
*/
fun getData(): SaveData {
return SaveData(level, gold, point)
}
}
MemoryCard.kt
package memento
class MemoryCard {
private val memory = ArrayList<SaveData>()
/**
*sparen
*/
fun save(data: SaveData) {
memory.add(data)
}
/**
*Laden (wiederherstellen)
*/
fun load(index: Int): Game {
val data = memory[index]
return Game(data.level, data.gold, data.point)
}
}
Client.kt
package memento
class Client {
init {
//Bezieht sich auf eine Speicherkarte
val memoryCard = MemoryCard()
//Spielbeginn
var game = Game(1, 0, 0)
//Besiege den Feind
game.enemyDown(1)
game.enemyDown(5)
game.enemyDown(6)
//sparen
memoryCard.save(game.getData())
//Aktuellen Zustand
game.show()
//Besiege den Feind
game.enemyDown(4)
game.enemyDown(2)
game.enemyDown(8)
//sparen
memoryCard.save(game.getData())
//Aktuellen Zustand
game.show()
//Kehren Sie zum ursprünglich gespeicherten Status zurück, da Sie einen Artikel nicht erworben haben
game = memoryCard.load(0)
//Aktuellen Zustand
game.show()
}
}
[out-put]
Level: 2 Besitz: 12 Erfahrung: 2
Level: 3 Besitz: 26 Erfahrung: 6
Level: 2 Besitz: 12 Erfahrung: 2
das ist alles
Recommended Posts