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(); }