设计模式:备忘录模式??

定  义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。

           这样以后就可以将该对象恢复到原先保存的状态。

结构图:

Originator(发起人):负责创建一个备忘录(Memento),用以记录当前时刻它的内部状态,并可以使用备忘录恢复内部状态。

Memnto(备忘录):负责存储Originator对象的内部状态,并可防止Originator以外的对象访问备忘录Memento。

Caretaker(管理者):负责保存备忘录(Memento),不能对备忘录的内容进行操作或检查。

class Originator
    {
        public string State { get; set; }

        public Memento CreateMemento()
        {
            return new Memento(this.State);
        }

        public void SetMemento(Memento m)
        {
            this.State = m.State;
        }

        public void Show()
        {
            Console.WriteLine("State:" + this.State);
        }
    }

    class Memento
    {
        private string state;

        public Memento(string state)
        {
            this.state = state;
        }

        public string State
        {
            get { return state; }
        }
    }

    class CareToker
    {
        public Memento memento { get; set; }
    }
View Code

客户端调用:

            Originator originator = new Originator();
            originator.State = "ON";
            originator.Show();

            CareToker careToker = new CareToker();
            //创建备忘录保存内部状态
            careToker.memento = originator.CreateMemento(); 

            originator.State = "OFF";
            originator.Show();

            //使用备忘录恢复内部状态
            originator.SetMemento(careToker.memento);
            originator.Show();   
View Code

结果:

posted @ 2014-02-25 14:45  齐_大圣  阅读(163)  评论(0编辑  收藏  举报