FishingRod.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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. //用随机数模拟鱼咬钩,若随机数为偶数,则为鱼咬钩
  15. if (new Random().Next() % 2 == 0)
  16. {
  17. var a = new Random(10).Next();
  18. var type = (FishType) new Random().Next(0, 5);
  19. Console.WriteLine("铃铛:叮叮叮,鱼儿咬钩了");
  20. if (FishingEvent != null)
  21. FishingEvent(type);
  22. }
  23. }
  24. }
  25. /// <summary>
  26. /// 垂钓者(观察者)
  27. /// </summary>
  28. public class FishingMan
  29. {
  30. public FishingMan(string name)
  31. {
  32. Name = name;
  33. }
  34. public string Name { get; set; }
  35. public int FishCount { get; set; }
  36. public void Update(FishType type)
  37. {
  38. FishCount++;
  39. Console.WriteLine("{0}:钓到一条[{2}],已经钓到{1}条鱼了!", Name, FishCount, type);
  40. }
  41. }
  42. }