static void Main(string[] args) { // Клиентский код. Originator originator = new Originator("Super-duper-super-puper-super."); Caretaker caretaker = new Caretaker(originator); caretaker.Backup(); originator.DoSomething(); caretaker.Backup(); originator.DoSomething(); caretaker.Backup(); originator.DoSomething(); Console.WriteLine(); caretaker.ShowHistory(); Console.WriteLine("\nClient: Now, let's rollback!\n"); caretaker.Undo(); Console.WriteLine("\n\nClient: Once more!\n"); caretaker.Undo(); Console.WriteLine(); }
static void Main(string[] args) { Console.WriteLine("Memento"); Console.WriteLine("Memento and Command Example"); var originator = new Originator(0); var caretaker = new Caretaker(originator); // 1 + 2 + 3 + 4 + 5 = 15 (state) for (var i = 1; i <= 5; i++) { originator.Add(i); } caretaker.Backup(); // 15 - 10 = 5 (state) originator.Subtract(10); caretaker.Backup(); // 5 * 8 = 40 (state) originator.MultiplyBy(8); caretaker.Backup(); // 40 / 20 = 2 (state) originator.DivideBy(20); caretaker.Backup(); for (int i = 0; i <= 10; i++) { caretaker.RestorePreviousState(); } }