设计模式-行为型-备忘录模式

Posted by YaPi on May 10, 2018

基础与定义

  • 保存一个对象的某个状态,以便在适当的时候恢复对象
  • 类型:行为型

使用场景:

  1. 保存及恢复数据相关业务场景,比如:idea的后退,浏览器的后退,游戏的存档等等

缺点:

  1. 资源占用较多

代码实例

public class Status {
    private String statusName;

    public String getStatusName() {
        return statusName;
    }

    public void setStatusName(String statusName) {
        this.statusName = statusName;
    }

    public StatusMemento saveToMemento(){
        return new StatusMemento(this.statusName);
    }

    public void undoFromMemento(StatusMemento statusMemento){
        this.statusName = statusMemento.getStatusName();
    }
}



public class StatusMemento {
    private String statusName;
    public StatusMemento(String statusName) {
        this.statusName = statusName;
    }

    public String getStatusName() {
        return statusName;
    }

    public void setStatusName(String statusName) {
        this.statusName = statusName;
    }
}


public class StatsuMementoManager {
    private final Stack<StatusMemento> statusMementos = new Stack<>();

    public void addMementon(StatusMemento statusMemento){
        statusMementos.push(statusMemento);
    }
    public StatusMemento getStatsuMemento(){
        return statusMementos.pop();
    }
}