Program.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Globalization;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading;
  7. using System.Threading.Tasks;
  8. namespace MementoPattern
  9. {
  10. class Program
  11. {
  12. static void Main(string[] args)
  13. {
  14. Console.WriteLine("======备忘录模式======");
  15. List<ContactPerson> persons = new List<ContactPerson>()
  16. {
  17. new ContactPerson("张三","13513757890"),
  18. new ContactPerson("李四","18563252369"),
  19. new ContactPerson("王二","17825635486"),
  20. };
  21. Mobile mobile = new Mobile(persons);
  22. mobile.DisplayPhoneBook();
  23. //备份通讯录
  24. Console.WriteLine("===通讯录已备份===");
  25. Caretaker caretaker = new Caretaker();
  26. string key = DateTime.Now.ToString(CultureInfo.InvariantCulture);
  27. caretaker.ContactMementoes.Add(DateTime.Now.ToString(CultureInfo.InvariantCulture), mobile.CreateMemento());
  28. Console.WriteLine($"==={key}:通讯录已备份===");
  29. //移除第一个联系人
  30. Console.WriteLine("----移除联系人----");
  31. mobile.GetPhoneBook().RemoveAt(0);
  32. mobile.DisplayPhoneBook();
  33. Thread.Sleep(2000);
  34. string key2 = DateTime.Now.ToString(CultureInfo.InvariantCulture);
  35. caretaker.ContactMementoes.Add(DateTime.Now.ToString(CultureInfo.InvariantCulture), mobile.CreateMemento());
  36. Console.WriteLine($"==={key2}:通讯录已备份===");
  37. //再移除一个联系人
  38. Console.WriteLine("----移除联系人----");
  39. mobile.GetPhoneBook().RemoveAt(0);
  40. mobile.DisplayPhoneBook();
  41. //恢复通讯录
  42. Console.WriteLine($"----恢复到最后一次通讯录备份:{caretaker.ContactMementoes.LastOrDefault().Key}----");
  43. mobile.RestoreMemento(caretaker.ContactMementoes.LastOrDefault().Value);
  44. mobile.DisplayPhoneBook();
  45. Console.ReadLine();
  46. }
  47. }
  48. }