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());
        }
    }
  • 相关阅读:
    226_翻转二叉树
    199_二叉树的右视图
    145_二叉树的后序遍历
    做IT,网络/系统/数据库/软件开发都得懂
    [恢]hdu 1200
    [恢]hdu 2080
    [恢]hdu 1222
    [恢]hdu 1128
    [恢]hdu 2153
    [恢]hdu 2132
  • 原文地址:https://www.cnblogs.com/littlehoom/p/5357251.html
Copyright © 2011-2022 走看看