• 设计模式之备忘录模式


    备忘录模式

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

    Originator

    package com.hml.memo;
    
    public class Originator {
    
        private String state;
    
        public String getState() {
            return state;
        }
    
        public void setState(String state) {
            this.state = state;
        }
        
        public Memento createMemento() {
            
            return new Memento(state);
        }
        
        public void setMemento(Memento m) {
            this.state = m.getState();
        }
        
        public void show() {
            System.out.println("state: " + state);
        }
        
    }

    Memento

    package com.hml.memo;
    
    public 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;
        }
    
    }

    Caretaker

    package com.hml.memo;
    
    public class Caretaker {
    
        private Memento memento;
    
        public Memento getMemento() {
            return memento;
        }
    
        public void setMemento(Memento memento) {
            this.memento = memento;
        }
    }

    Test

    package com.hml.memo;
    
    public class Test {
        public static void main(String[] args) {
            Originator originator = new Originator();
            originator.setState("on");
            originator.show();
    
            Caretaker c = new Caretaker();
            c.setMemento(originator.createMemento());
    
            originator.setState("off");
            originator.show();
    
            originator.setMemento(c.getMemento());
    
        }
    }

    类图

    备忘录(Memento)模式比较适用于功能比较复杂的,但是要维护或者记录属性历史的类,或者需要保存的属性是众多属性的一小部分时,Originator可以根据保存的Memento信息还原到以前的状态。如果在某个系统中使用命令模式时,需要实现命令的撤销功能,那么命令模式可以使用备忘录模式来存储撤销操作的状态。

  • 相关阅读:
    十:Webpack 引入bootstrap
    九:Webpack结合ES6
    pfx格式密钥库修改密码
    邮件发送接收工具
    用keytool制作证书并在tomcat配置https服务(四)
    用keytool制作证书并在tomcat配置https服务(三)
    用keytool制作证书并在tomcat配置https服务(二 )
    用keytool制作证书并在tomcat配置https服务(一)
    java全角和半角转换
    RC4加密解密
  • 原文地址:https://www.cnblogs.com/heml/p/4643864.html
Copyright © 2020-2023  润新知