Example #1
0
        static void Main(string[] args)
        {
            Originator originator = new Originator();

            originator.SetState("开始");
            originator.Show();

            Caretaker caretaker = new Caretaker();

            caretaker.SetMemento(originator.CreateMemento());

            originator.SetState("停止");
            originator.Show();

            originator.SetMemento(caretaker.GetMemento());
            originator.Show();

            GameRole gameRole = new GameRole();

            gameRole.Init();
            Console.WriteLine("===========");
            gameRole.ShowState();

            GameStateCaretaker caretakerA = new GameStateCaretaker();

            caretakerA.SetGameState(gameRole.SaveState());

            Console.WriteLine("===========");
            gameRole.DoTask();
            gameRole.ShowState();

            gameRole.Recover(caretakerA.GetGameState());
            gameRole.ShowState();
        }
Example #2
0
        /// <summary>
        /// 单个撤销
        /// </summary>
        public static void Invoke()
        {
            //创建原发器对象
            Originator originator = new Originator("状态1");

            Console.WriteLine(originator.GetState());
            //创建负责人对象
            Caretaker caretaker = new Caretaker();

            caretaker.SetMemento(originator.CreateMemento());

            originator.SetState("状态2");
            Console.WriteLine(originator.GetState());

            //从负责人对象中取出备忘录对象
            originator.RestoreMemento(caretaker.GetMemento());
            Console.WriteLine(originator.GetState());
        }