FishingRod.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using System;
  2. namespace ObserverPattern.DelegateImplement
  3. {
  4. /// <summary>
  5. /// 鱼竿
  6. /// </summary>
  7. public class FishingRod
  8. {
  9. public delegate void FishingHandler(FishType type); //声明委托
  10. public event FishingHandler FishingEvent; //声明事件
  11. public void Fishing()
  12. {
  13. Console.WriteLine("开始下钩!");
  14. //用随机数模拟鱼咬钩,若随机数大于5,通知订阅者
  15. var a = new Random(10).Next();
  16. var type = (FishType) new Random().Next(0, 5);
  17. Console.WriteLine("铃铛:叮叮叮,鱼儿咬钩了");
  18. if (FishingEvent != null)
  19. FishingEvent(type);
  20. }
  21. }
  22. /// <summary>
  23. /// 垂钓者(观察者)
  24. /// </summary>
  25. public class FishingMan
  26. {
  27. public FishingMan(string name)
  28. {
  29. Name = name;
  30. }
  31. public string Name { get; set; }
  32. public int FishCount { get; set; }
  33. public void Update(FishType type)
  34. {
  35. FishCount++;
  36. Console.WriteLine("{0}:钓到一条[{2}],已经钓到{1}条鱼了!", Name, FishCount, type);
  37. }
  38. }
  39. }