美文网首页
备忘录模式(Memento)

备忘录模式(Memento)

作者: 森码 | 来源:发表于2018-08-05 18:09 被阅读14次
    1. 定义
      在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。

    2. 类图


      Memento
    3. 例子

    class Originator {
        private String state = "";
        
        public String getState() {
            return state;
        }
        public void setState(String state) {
            this.state = state;
        }
        public Memento createMemento(){
            return new Memento(this.state);
        }
        public void restoreMemento(Memento memento){
            this.setState(memento.getState());
        }
    }
     
    class Memento {
        private String state = "";
        public Memento(String state){
            this.state = state;
        }
        public String getState() {
            return state;
        }
        public void setState(String state) {
            this.state = state;
        }
    }
    class Caretaker {
        private Memento memento;
        public Memento getMemento(){
            return memento;
        }
        public void setMemento(Memento memento){
            this.memento = memento;
        }
    }
    public class Client {
        public static void main(String[] args){
            Originator originator = new Originator();
            originator.setState("状态1");
            System.out.println("初始状态:"+originator.getState());
            Caretaker caretaker = new Caretaker();
            caretaker.setMemento(originator.createMemento());
            originator.setState("状态2");
            System.out.println("改变后状态:"+originator.getState());
            originator.restoreMemento(caretaker.getMemento());
            System.out.println("恢复后状态:"+originator.getState());
        }
    }
    

    例子来源于这里
    补充

    • 备份

    相关文章

      网友评论

          本文标题:备忘录模式(Memento)

          本文链接:https://www.haomeiwen.com/subject/vxobvftx.html