大话设计模式----备忘录模式

一、备忘录模式:在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。

二、代码示例

@Data
public class Memento {

    private String state;

    public Memento(String state) {
        this.state = state;
    }
}

@Data
public class Originator {

    private String state;

    public Memento createMemento(){
        return new Memento(state);
    }

    public void setMemento(Memento memento){
        state = memento.getState();
    }

    public void show(){
        System.out.println("state = " + state);
    }
}

@Data
public class Caretaker {
    private Memento memento;
}

public class Test {

    public static void main(String[] args) {
        Originator originator = new Originator();
        originator.setState("ON");
        originator.show();

        Caretaker caretaker = new Caretaker();
        caretaker.setMemento(originator.createMemento());

        originator.setState("OFF");
        originator.show();

        originator.setMemento(caretaker.getMemento());
        originator.show();
    }
}

三、适用场景

  适用于功能比较复杂的,但需要维护或记录属性历史的类,或者需要保存的属性只是众多属性中的一小部分时,Originator可以根据保存的Memento信息还原到前一状态。

  使用备忘录可以把复杂的对象内部信息对其他的对象屏蔽起来。

  

posted @ 2020-04-09 22:07  Eden-programmer  阅读(127)  评论(0)    收藏  举报