美文网首页
JAVA的23种设计模式-----备忘录模式(一)

JAVA的23种设计模式-----备忘录模式(一)

作者: 阿狸演绎 | 来源:发表于2017-11-22 10:08 被阅读0次

    备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象回复到原先保存的的状态.
    注:
    a:备忘录模式就是一个对象的备份模式,提供了一种程序数据的备份方法.
    b:备忘录模式包含了发起人角色,备忘录角色,备忘录管理人角色三种角色
    c:常见的数据库的事务管理,回滚,用到了备忘录模式.
    d:备忘录一旦被创建出来,我们要主动管理其生命周期,建立就要使用,不使用就立即删除其引用,另外,不要在频繁建立备份的场景中使用备忘录模式.
    普通的

    package MemoOne;
    //程序员
    public class Programer {
    //代码状态
        private String codeState = null;
        //代码状态变更
        public void changCodeState(){
            this.codeState="代码被修改过了";
        }
        //getter/setter
        public String getCodeState() {
            return codeState;
        }
        public void setCodeState(String codeState) {
            this.codeState = codeState;
        }
        //保留一个备份
        public Memento createMemento(){
            return new Memento(this.codeState);
        }
        //恢复备份代码
        public void restoreMemento(Memento _mement){
            this.setCodeState(_mement.getCodeState());
        }
    
    package MemoOne;
    
    //备忘录
    /**
     * @author lanou3g
     *
     */
    public class Memento {
        // 代码状态
        private String codeState = null;
        // 构造函数
        public Memento(String codeState) {
            this.codeState = codeState;
        }
        //getter,getter
        public String getCodeState() {
            return codeState;
        }
        public void setCodeState(String CodeState) {
            this.codeState = codeState;
        }
    
    }
    
    
    package MemoOne;
    //备忘录管理者
    public class Caretaker {
    //备忘录对象
        private Memento memento;
        //getter.setter
    
        public Memento getMemento() {
            return memento;
        }
    
        public void setMemento(Memento memento) {
            this.memento = memento;
        }
        
    }
    
    
    package MemoOne;
    //备忘录恢复场景模拟
    public class Client {
    public static void main(String[] args) {
        //程序员出场
        Programer programer = new Programer();
        //备份管理者出场
        Caretaker caretaker = new Caretaker();
        //初始化代码状态
        programer.setCodeState("项目代码已经完成了");
        //输入:项目代码已经完成了
        System.out.println(programer.getCodeState());
        //代码备份
        caretaker.setMemento(programer.createMemento());
        //代码变更
        programer.createMemento();
        System.out.println(programer.getCodeState());
        //输出:代码被修改过了
        //代码按照备份恢复
        programer.restoreMemento(caretaker.getMemento());
        System.out.println(programer.getCodeState());
        //输入:项目代码已经完成了
    }
    }
    
    
    
    

    }

    相关文章

      网友评论

          本文标题:JAVA的23种设计模式-----备忘录模式(一)

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