首页 > 其他 > 详细

设计模式-备忘录模式

时间:2018-05-19 20:01:59      阅读:224      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!