static void Main(string[] args) { Originator originator = new Originator("stato 1"); //CareTaker ct = new CareTaker(originator.SaveMemento()); CareTaker ct = new CareTaker(); ct.AddMemento(originator.SaveMemento()); Console.WriteLine("stato: " + originator.Text); originator.Text = "stato modificato"; Console.WriteLine("stato: " + originator.Text); ct.AddMemento(originator.SaveMemento()); originator.Text = "stato modificato2"; Console.WriteLine("stato: " + originator.Text); ct.AddMemento(originator.SaveMemento()); originator.Text = "stato modificato3"; Console.WriteLine("stato: " + originator.Text); originator.RestoreMemento(ct.GetMemento()); Console.WriteLine("stato: " + originator.Text); originator.RestoreMemento(ct.GetMemento()); Console.WriteLine("stato: " + originator.Text); //originator.RestoreMemento(ct.Memento); //Console.WriteLine("stato: " + originator.Text); // The code provided will print ‘Hello World’ to the console. // Press Ctrl+F5 (or go to Debug > Start Without Debugging) to run your app. Console.WriteLine("Hello World!"); Console.ReadKey(); // Go to http://aka.ms/dotnet-get-started-console to continue learning how to build a console app! }
public static void Main() { Originator originator = new Originator(); CareTaker careTaker = new CareTaker(); originator.ChangeState(new State("状态一")); originator.ChangeState(new State("状态二")); //存储当前状态 string key = originator.GetState().name; careTaker.AddMemento(key, originator.CreateMemento()); originator.ChangeState(new State("状态三")); //恢复到之前备份的某一状态 originator.RestoreFromMemento(careTaker.GetMemento(key)); Debug.Log("目前状态:" + originator.GetState().name); }