Original: llaves MC (cuenta pública de WeChat: huakuohao-mc), bienvenido a compartir, conserve la fuente para la reimpresión.
El patrón memento se utiliza para hacer una copia de seguridad de parte del estado interno de un objeto y restaurar el estado del objeto a su estado original cuando sea necesario.
por ejemplo
Supongamos que cuando juegas todos los días, quieres que tu personaje guarde el estado del personaje primero cuando golpeas a un gran jefe, y si no logras vencer al jefe, puedes restaurarlo al estado original para que puedas comenzar de nuevo. En este momento, podemos considerar usar el modo memo.
Echa un vistazo a UML
la imagen:
Eche un vistazo a la implementación de código específico
Primero cree una nota para registrar el estado que debe registrarse.
public class Memento {
//需要保存的状态,可以是多个
private String state;
public Memento(String state){
this.state = state;
}
public String getState(){
return state;
}
}
复制代码
Defina un personaje del juego, cree una nota dentro del personaje y guarde el estado correspondiente en la nota.
public class GameRole {
//游戏状态
private String state;
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
//将状态存入备忘录
public Memento saveStateToMemento(){
return new Memento(state);
}
//从备忘录获取状态
public void getStateFromMemento(Memento memento){
state = memento.getState();
}
}
复制代码
Defina una clase de gestión para almacenar y restaurar el estado en la nota.
public class CareTaker {
//备份多个状态
private List<Memento> mementoList = new ArrayList<Memento>();
public void add(Memento memento){
mementoList.add(memento);
}
public Memento get(int index){
return mementoList.get(index);
}
}
复制代码
El cliente usa este
public class MementoPatternDemo {
public static void main(String[] args){
GameRole gameRole = new GameRole();
CareTaker careTaker = new CareTaker();
gameRole.setState("State #1");
gameRole.setState("State #2");
careTaker.add(gameRole.saveStateToMemento());
gameRole.setState("State #3");
careTaker.add(gameRole.saveStateToMemento());
gameRole.setState("State #4");
System.out.println("Current State: " + gameRole.getState());
gameRole.getStateFromMemento(careTaker.get(0));
System.out.println("First saved State: " + gameRole.getState());
gameRole.getStateFromMemento(careTaker.get(1));
System.out.println("Second saved State: " + gameRole.getState());
}
}
复制代码
Resumir
El patrón de memorándum es uno de los patrones de comportamiento, que es más adecuado para clases con funciones complejas pero que necesitan mantener o registrar el historial de propiedades, o una pequeña parte de muchas propiedades. También es un patrón de diseño con una frecuencia de uso diario relativamente alta.
Este artículo hace referencia a www.tutorialspoint.com/design_patt…