• 备忘录模式(Memento)


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

    备忘录模式比较适合功能比较复杂的,但需要维护或记录属性历史的类。或者需要保存的属性只是众多属性中的一小部分时,Originator可以根据保存的Memento信息还原到前一状态。

    public class Role {
        private int blood;    //血量
        private int mana;    //蓝量
        public int getBlood() {
            return blood;
        }
        public void setBlood(int blood) {
            this.blood = blood;
        }
        public int getMana() {
            return mana;
        }
        public void setMana(int mana) {
            this.mana = mana;
        }
        public Role(int blood, int mana) {
            this.blood = blood;
            this.mana = mana;
        }
        //之前的状态
        public void before()
        {
            System.out.println("血量:"+getBlood()+"	"+"蓝量:"+getMana());
        }
    public class Memento {
        private int blood;    //血量    
        private int mana;    //蓝量
        public int getBlood() {
            return blood;
        }
        public void setBlood(int blood) {
            this.blood = blood;
        }
        public int getMana() {
            return mana;
        }
        public void setMana(int mana) {
            this.mana = mana;
        }
        public Memento(int blood, int mana) {
            
            this.blood = blood;
            this.mana = mana;
        }
        
    }
    public class Caretaker {
        private Memento memento;
    
        public Memento getMemento() {
            return memento;
        }
    
        public void setMemento(Memento memento) {
            this.memento = memento;
        }
        
    }
    public class MementoTest {
        public static void main(String[] args) {
            Role role=new Role(100,100);
            System.out.println("大战Boss之前");
            role.before();
            Caretaker caretaker=new Caretaker();
            Memento memento=role.after();
            caretaker.setMemento(memento);
            role.setBlood(20);
            role.setMana(10);
            System.out.println("大战Boss之后");
            role.before();
    }
    }

    http://www.cnblogs.com/S2223/p/6053427.html

  • 相关阅读:
    border——边框属性
    CSS1,CSS2选择器详解
    CSS样式表与HTML结合的方法
    详细解析HTML基础结构
    jquery 解析xml
    asp.net js调用后台方法
    asp.net利用剪切板导出excel
    webform 不实用office控件导出excel StringBuilder 类型拼接字符串表格导出excel
    Android再学习-20141018-布局-进度条
    Android再学习-20140928-布局
  • 原文地址:https://www.cnblogs.com/suzixuan/p/7040690.html
Copyright © 2020-2023  润新知