zoukankan      html  css  js  c++  java
  • 第十八章 备忘录模式

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

    Caretaker负责不暴露Originator的内部细节,Memento负责备忘字段。用星姐的话----完美!\> <///

    不足:角色状态要完整存储到备忘录对象中,如果状态数据很大很多,在资源消耗上,将非常耗内存。

    /**
     * Created by hero on 16-4-5.
     */
    public class Originator {
        private String state;
    
        public Memento createMemento(){
            return new Memento(state);
        }
    
        public void recoveryState(Memento memento){
            state = memento.getState();
        }
    
        public Originator() {
        }
    
        public Originator(String state) {
            this.state = state;
        }
    
        public String getState() {
            return state;
        }
    
        public void setState(String state) {
            this.state = state;
        }
    }
    /**
     * Created by hero on 16-4-5.
     */
    public class Memento {
        private String state;
    
        public Memento(String state) {
            this.state = state;
        }
    
        public String getState() {
            return state;
        }
    
        //不能有set方法
    }
    /**
     * Created by hero on 16-4-5.
     */
    public class Caretaker {
        private Memento memento;
    
        public Memento getMemento() {
            return memento;
        }
    
        public void setMemento(Memento memento) {
            this.memento = memento;
        }
    }
    public class Main {
    
        public static void main(String[] args) {
            Originator originator = new Originator();
            originator.setState("on");
            Caretaker caretaker = new Caretaker();
            caretaker.setMemento(originator.createMemento());
            originator.setState("off");
            originator.recoveryState(caretaker.getMemento());
        }
    }
  • 相关阅读:
    动态规划--数字三角形问题
    C#操作Office.word(一)
    【算法参考】动态规划
    数据结构--图的定义和存储结构
    重定向输入输出流--freopen
    C++内联函数、函数模板之于头文件
    C++静态局部对象
    C++函数模板
    条款05:了解C++默默编写并调用哪些函数
    设计模式 之 装饰器模式
  • 原文地址:https://www.cnblogs.com/littlehoom/p/5357251.html
Copyright © 2011-2022 走看看