using System; namespace ObserverPattern.DelegateImplement { /// /// 鱼竿 /// public class FishingRod { public delegate void FishingHandler(FishType type); //声明委托 public event FishingHandler FishingEvent; //声明事件 public void Fishing() { Console.WriteLine("开始下钩!"); //用随机数模拟鱼咬钩,若随机数大于5,通知订阅者 var a = new Random(10).Next(); var type = (FishType) new Random().Next(0, 5); Console.WriteLine("铃铛:叮叮叮,鱼儿咬钩了"); if (FishingEvent != null) FishingEvent(type); } } /// /// 垂钓者(观察者) /// public class FishingMan { public FishingMan(string name) { Name = name; } public string Name { get; set; } public int FishCount { get; set; } public void Update(FishType type) { FishCount++; Console.WriteLine("{0}:钓到一条[{2}],已经钓到{1}条鱼了!", Name, FishCount, type); } } }