设计模式-备忘录模式-创新互联

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是克隆的整个对象,而备忘录模式可以人为控制的只备份关键属性。如果扩展,不要改当前备忘录,添加新的类作为新的备忘录就好。
优点:随时还原
缺点:数据太大的话影响性能。

站在用户的角度思考问题,与客户深入沟通,找到南城网站设计与南城网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、网站制作、企业官网、英文网站、手机端网站、网站推广、域名与空间、虚拟空间、企业邮箱。业务覆盖南城地区。

设计模式-备忘录模式

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。


新闻标题:设计模式-备忘录模式-创新互联
新闻来源:http://azwzsj.com/article/gpdgs.html