RestoreFromMemento() public method

public RestoreFromMemento ( Memento memento ) : string
memento Memento
return string
        public string Undo()
        {
            if (currentArticle > 0)
            {
                currentArticle -= 1;
            }

            Memento prev        = caretaker.Get(currentArticle);
            string  prevArticle = originator.RestoreFromMemento(prev);

            return(prevArticle);
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            var savedStates = new List <Originator.Memento>();

            var originator = new Originator();

            originator.Set("State #1");
            originator.Set("State #2");
            savedStates.Add(originator.SaveToMemento());
            originator.Set("State #3");
            savedStates.Add(originator.SaveToMemento());
            originator.Set("State #4");

            originator.RestoreFromMemento(savedStates.Last());

            Console.ReadLine();
        }
Ejemplo n.º 3
0
        // Intent: Without violating encapsulation, capture and externalize
        //         an object's internal state so that the object can be restored
        //         to this state later.
        //
        // Memento存储Originator的状态
        // Originator创建一个Memento,记录状态;使用Memento恢复状态
        // CareTaker拥有Memento,负责存取

        static void Main(string[] args)
        {
            var originator = new Originator {
                State = "Original State"
            };

            Console.WriteLine(originator.State);

            var caretaker = new Caretaker();

            caretaker.SaveMemento(originator.CreateMemento());

            originator.State = "New State";
            Console.WriteLine(originator.State);

            originator.RestoreFromMemento(caretaker.OriginatorMemento);
            Console.WriteLine(originator.State);
        }
Ejemplo n.º 4
0
        public static void Main(string[] args)
        {
            Caretaker caretaker = new Caretaker();

            Originator org = new Originator("Memento Pattern", "Gruppe 0", "This is just a test", DateTime.UtcNow);

            org.PrintState();

            caretaker.Save(org.SaveToMemento());

            Thread.Sleep(3000);

            org.Description = "The pattern can be used for many things like this.";
            org.Author      = "Gruppe 25";

            caretaker.Save(org.SaveToMemento());

            org.PrintState();

            Thread.Sleep(2000);

            org.Description = "The pattern can be used for many thi...";
            org.Author      = "Gruppe 26";


            org.PrintState();

            caretaker.Save(org.SaveToMemento());

            Thread.Sleep(1000);

            org.Description = "The pattern can be used for am back to ear....";

            org.PrintState();

            Thread.Sleep(1000);

            Console.WriteLine("\n\nRolling back two changes -> result:\n ");

            org.RestoreFromMemento(caretaker.Restore(1));

            org.PrintState();
        }