设计模式-》备忘录模式

侠盗飞车存档

  • 人物坐标
  • 目前任务关卡
  • 犯罪星级
    public class GameData
    {
        public double Money { get; set; }


        public int TaskLevel { get; set; }

        public int X { get; set; }

        public int Y { get; set; }


        public GameData(double money, int taskLevel, int x, int y, int fanZuiLevel)
        {
            Money = money;
            TaskLevel = taskLevel;
            X = x;
            Y = y;
            FanZuiLevel = fanZuiLevel;
        }


        public int FanZuiLevel { get; set; }
    }

    public class GameWord
    {
        public GameWord(GameData gameData)
        {
            GameData = gameData;
        }


        public GameMemento SaveState()
        {
            return new GameMemento(GameData);
        }

        public void ShowDisplay()
        {
            Console.WriteLine($"坐标:{GameData.X}:{GameData.Y},钱:{GameData.Money}");
        }

        public void Die()
        {
            this.GameData = null;
        }

        public void RecoveryState(GameMemento gameData)
        {
            GameData = gameData.GameData;
        }

        public GameData GameData { get; set; }
    }

    public class GameMemento
    {
        public GameMemento(GameData gameData)
        {
            GameData = gameData;
        }

        public GameData GameData { get; set; }
    }

    public class GameCaretaker
    {
        

        public GameMemento GameMemento { get; set; }

        public GameMemento GetGameMemento => GameMemento;


        public void SetGameMemento(GameMemento gameMemento)
        {
            GameMemento = gameMemento;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            GameData gameData = new GameData(100, 1, 100, 20, 2);
            GameWord gameWord = new GameWord(gameData);
            gameWord.ShowDisplay();
            GameCaretaker gameCaretaker = new GameCaretaker();
            gameCaretaker.SetGameMemento(gameWord.SaveState());
            gameWord.Die();
            gameWord.RecoveryState(gameCaretaker.GetGameMemento);
            gameWord.ShowDisplay();
            Console.WriteLine("Hello World!");
        }
    }

参考地址

posted @ 2022-01-17 10:44  icxl  阅读(34)  评论(0编辑  收藏  举报