Serie de patrones de diseño - Patrón Memo

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 UMLla imagen:

recuerdo.png

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…

Supongo que te gusta

Origin juejin.im/post/7080336957628219406
Recomendado
Clasificación