Esta página se tradujo automáticamente con la API de traducción de Google Cloud.
Algunas páginas se pueden leer mejor en su totalidad.
El patrón memento es un patrón de diseño de software que brinda la capacidad de guardar y restaurar el estado de un objeto. A menudo se usa junto con las operaciones de deshacer/rehacer.
El patrón de recuerdo es una estructura de tres niveles que consiste en el originador, el cuidador y el recuerdo.
El originador es el objeto cuyo estado debe guardarse. El cuidador es el objeto responsable de salvar y restaurar el estado del originador. El memento es un objeto inmutable que almacena el estado del creador.
El patrón memento se utiliza para:
Hay dos formas de implementar el patrón memento en Kotlin:
Una clase de datos es una clase que está diseñada para contener datos. Las clases de datos tienen una serie de características que las hacen ideales para implementar el patrón memento:
copia
data
Para implementar el patrón memento usando una clase de datos, necesitamos crear una clase Memento
que almacene el estado de la clase Original
. La clase Originator
tiene un método createMemento
que crea un objeto Memento
y un método restoreMemento
que restaura el estado del Originator
a partir de un objeto Memento
.
Aquí hay un ejemplo de cómo implementar el patrón memento usando una clase de datos:
data class Originator(var state: String) {
fun createMemento(): Memento {
return Memento(state)
}
fun restoreMemento(memento: Memento) {
state = memento.state
}
data class Memento(val state: String)
}
Una clase sellada es una clase que puede tener una o más subclases. Las clases selladas son ideales para implementar el patrón memento porque:
sellado
abstracto
Para implementar el patrón memento usando una clase sellada, necesitamos crear una clase sellada Memento
que tenga una subclase para cada estado del Original
. La clase Originator
tiene un método createMemento
que crea un objeto Memento
y un método restoreMemento
que restaura el estado del Originator
a partir de un objeto Memento
.
Aquí hay un ejemplo de cómo implementar el patrón memento usando una clase sellada:
sealed class Memento
class Originator(var state: String) {
fun createMemento(): Memento {
return when (state) {
"state1" -> State1()
"state2" -> State2()
else -> throw IllegalArgumentException("Invalid state")
}
}
fun restoreMemento(memento: Memento) {
state = when (memento) {
is State1 -> "state1"
is State2 -> "state2"
else -> throw IllegalArgumentException("Invalid memento")
}
}
class State1 : Memento
class State2 : Memento
}
En este artículo, hemos aprendido sobre el patrón memento y cómo implementarlo en Kotlin usando clases de datos y clases selladas.