温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

设计模式-备忘录模式

发布时间:2020-06-24 23:03:32 来源:网络 阅读:331 作者:全嗲吉祥 栏目:编程语言
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是克隆的整个对象,而备忘录模式可以人为控制的只备份关键属性。如果扩展,不要改当前备忘录,添加新的类作为新的备忘录就好。
优点:随时还原
缺点:数据太大的话影响性能。

设计模式-备忘录模式

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI