Mobile.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace MementoPattern
  7. {
  8. /// <summary>
  9. /// 手机用户
  10. /// </summary>
  11. public class Mobile
  12. {
  13. private List<ContactPerson> _contactPersons;
  14. public List<ContactPerson> GetPhoneBook()
  15. {
  16. return _contactPersons;
  17. }
  18. public Mobile(List<ContactPerson> contactPersons)
  19. {
  20. _contactPersons = contactPersons;
  21. }
  22. /// <summary>
  23. /// 创建备份
  24. /// </summary>
  25. /// <returns></returns>
  26. public ContactMemento CreateMemento()
  27. {
  28. //思考以下为什么要new List<ContactPerson>(_contactPersons)
  29. return new ContactMemento(new List<ContactPerson>(_contactPersons));
  30. }
  31. /// <summary>
  32. /// 恢复备份
  33. /// </summary>
  34. /// <param name="memento"></param>
  35. public void RestoreMemento(ContactMemento memento)
  36. {
  37. this._contactPersons = memento.GetMemento();
  38. }
  39. public void DisplayPhoneBook()
  40. {
  41. Console.WriteLine($"共有{_contactPersons.Count}位联系人,联系人列表如下:");
  42. foreach (var contactPerson in _contactPersons)
  43. {
  44. Console.WriteLine($"姓名:{contactPerson.Name},电话:{contactPerson.PhoneNumber}");
  45. }
  46. }
  47. }
  48. }