码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式-备忘录模式

时间:2018-05-19 20:02:38      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:设计模式   备忘录模式   

class Memento { private int age; public int Age { get { return age; } set { this.age = value; } } public Memento(int _age) { age = _age; } } class Person { private string name; public string Name { get { return name; } set { this.name = value; } } private int age; public int Age { get { return age; } set { this.age = value; } } public Memento SaveToMemento() { return new Memento(age); } public void ReadMemento(Memento m) { this.age = m.Age; } public void Show() { Console.WriteLine("我叫{0},今年{1}岁", name, age); } } class MementoController { private Memento memento; public Memento Memento { get { return memento; } set { this.memento = value; } } } //前端 class Program { static void Main(string[] args) { Person person = new Person(); MementoController mc = new MementoController();//备忘录管理者,不允许客户直接访问备忘录 person.Name = "张三"; person.Age = 15; person.Show(); Console.WriteLine("把15岁存起来,以后老了在回来"); mc.Memento= person.SaveToMemento(); Console.WriteLine("20年过去了....."); Console.WriteLine("30年过去了....."); Console.WriteLine("40年过去了....."); Console.WriteLine("50年过去了....."); person.Age = person.Age+50; person.Show(); Console.WriteLine("好想回到小时候.....那就回去把"); person.ReadMemento(mc.Memento); person.Show(); Console.ReadLine(); } }

总结:备忘录模式就是把对象的部分属性做备份(在对象之外),然后在想恢复的时候恢复。
原型模式的clone也可以备份数据,之所以还有备忘录模式,是因为clone是克隆的整个对象,而备忘录模式可以人为控制的只备份关键属性。如果扩展,不要改当前备忘录,添加新的类作为新的备忘录就好。
优点:随时还原
缺点:数据太大的话影响性能。

技术分享图片

设计模式-备忘录模式

标签:设计模式   备忘录模式   

原文地址:http://blog.51cto.com/5591787/2118274

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!