备忘录

来源:互联网 发布:索尼电视推荐 知乎 编辑:程序博客网 时间:2024/06/03 21:22

意图

保存一个对象在某一刻的(部分)状态,这样以后需要时它才能恢复到先前的状态.(和原型模式功能类似).

构成---参与者:
 Memento: 备忘录。正常使用的类.
Originator: 原发器。负责创建一个备忘录,用以记录当前对象的内部状态,通过它将当前的( Memento:备忘录 )对象的某一些状态保存到(Caretaker:看管者)里面,也可通过它将(Caretaker: 看管者)保存的某一时刻的某些状态给取出.
 Caretaker: 看管者。负责保存好备忘录,不能对备忘录的内容进行操作和访问,只能够将备忘录传递给其他对象。
    class 备忘录  //相当于普通类,里面有几个属性    {        public string Name { get; set; }        public string Phone { get; set; }        public double Money { get; set; }    }
        public 备忘录 保存备忘录(string n,string p,double m) //保存某一时刻的三个属性的状态        {            return new 备忘录() {Name = n, Money = m, Phone = p};        }        public 备忘录 RestoreMemento(备忘录 memento)//取出那时保存的‘备忘录’的一些状态        {            return memento;        }
    class 看管者    {//保存的某一时刻备忘录的状态        public 备忘录 Memeneto { get; set; }    }
           备忘录 memeont = new 备忘录() {Name = "way", Phone = "13532540453", Money = 123456.123};            原发器 yuan = new 原发器();//这里是正常调用            看管者 locks = new 看管者            {                Memeneto = yuan.保存备忘录(memeont .Name ,memeont .Phone ,memeont .Money )            };            memeont.Name = "souj";            memeont.Phone = "13418286056";            memeont.Money = 789456.55;            备忘录 memeont1=      yuan.RestoreMemento(locks.Memeneto);
当memeont修改后不影响备忘录 memeont1=      yuan.RestoreMemento(locks.Memeneto);以前保管的结果.