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());
        }
    }
  • 相关阅读:
    I/O多路复用技术
    网络编程的异常及处理
    LINUX的signal
    网络编程小知识
    一个位压缩技巧
    加密技术[翻译]
    暴雪的hash算法[翻译]
    喜欢就好
    【PYTHON】编码是个细致活
    【Python3】POP3协议收邮件
  • 原文地址:https://www.cnblogs.com/littlehoom/p/5357251.html
Copyright © 2011-2022 走看看