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

            r1.InitState();
            r1.ShowState();

            //GameRole backup=new GameRole();
            //备份 --暴露实现细节 不可取
            //backup.RotRoleData.Attack = r1.RotRoleData.Attack;
            //backup.RotRoleData.Defence = r1.RotRoleData.Defence;
            //backup.RotRoleData.Life = r1.RotRoleData.Life;


            //r1.Fright();
            //r1.ShowState();

            //恢复 --暴露实现细节,  不可取
            //r1.RotRoleData.Attack = backup.RotRoleData.Attack;
            //r1.RotRoleData.Defence = backup.RotRoleData.Defence;
            //r1.RotRoleData.Life = backup.RotRoleData.Life;
            //r1.ShowState();

            DataCraretaker dataCraretaker = new DataCraretaker();

            dataCraretaker.AddMemento("战斗前", r1.SetDataMemento());
            r1.Fright();
            r1.ShowState();

            //恢复
            r1.RotRoleData = dataCraretaker.GetMemento("战斗前").RoleData;
            r1.ShowState();

            //备忘录 模式
            //Memento
            // 再不破坏封装性的前提下, 捕获一个对象的内部状态,并在该对象之外保存这个状体,这样以后即可将该对象恢复到原先保存的状态
            MenClient menClient = new MenClient();

            menClient.Start();
        }