Program.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. using System;
  2. using System.Threading;
  3. using ObserverPattern.SimpleImplement;
  4. namespace ObserverPattern
  5. {
  6. internal class Program
  7. {
  8. private static void Main(string[] args)
  9. {
  10. SimpleObserverTest();
  11. Console.ReadLine();
  12. Console.WriteLine("=======================");
  13. DelegateObserverTest();
  14. Console.ReadLine();
  15. }
  16. /// <summary>
  17. /// 测试简单实现的观察者模式
  18. /// </summary>
  19. private static void SimpleObserverTest()
  20. {
  21. Console.WriteLine("简单实现的观察者模式:");
  22. Console.WriteLine("=======================");
  23. //1、初始化鱼竿
  24. var fishingRod = new FishingRod();
  25. //2、声明垂钓者
  26. var jeff = new FishingMan("圣杰");
  27. //3、将垂钓者观察鱼竿
  28. fishingRod.AddSubscriber(jeff);
  29. //4、循环钓鱼
  30. while (jeff.FishCount < 5)
  31. {
  32. fishingRod.Fishing();
  33. Console.WriteLine("-------------------");
  34. //睡眠5s
  35. Thread.Sleep(5000);
  36. }
  37. }
  38. /// <summary>
  39. /// 测试委托实现的观察者模式
  40. /// </summary>
  41. private static void DelegateObserverTest()
  42. {
  43. Console.WriteLine("委托实现的观察者模式:");
  44. Console.WriteLine("=======================");
  45. //1、初始化鱼竿
  46. var fishingRod = new DelegateImplement.FishingRod();
  47. //2、声明垂钓者
  48. var jeff = new DelegateImplement.FishingMan("圣杰");
  49. //3、注册观察者
  50. fishingRod.FishingEvent += jeff.Update;
  51. //4、循环钓鱼
  52. while (jeff.FishCount < 5)
  53. {
  54. fishingRod.Fishing();
  55. Console.WriteLine("-------------------");
  56. //睡眠5s
  57. Thread.Sleep(5000);
  58. }
  59. }
  60. }
  61. }