private static void DelegateTest() { Console.WriteLine("委托实现的发布订阅模式来钓鱼:"); Console.WriteLine("======================="); //1、初始化鱼竿 var fishingRod = new FishingRodWithDelegate(); //2、声明垂钓者 var jeff = new FishingMan("圣杰"); //3.分配鱼竿 jeff.FishingRod = fishingRod; //4、注册观察者(已通过反射动态注册) //fishingRod.FishingEvent += new FishingEventHandler().HandleEvent; //5、循环钓鱼 while (jeff.FishCount < 5) { jeff.Fishing(); Console.WriteLine("-------------------"); //睡眠2s Thread.Sleep(2000); } }
static void Main(string[] args) { /* * SmsObserver smsObserver = new SmsObserver(); * EmailObserver emailObserver = new EmailObserver(); * ISubject subject = new PublishProjectSubject(); * subject.Update += new UpdateHandler(smsObserver.SendSms); * subject.Update += emailObserver.SendEmail; * subject.Nodify(); */ // 钓鱼 // 1.初始化鱼竿 FishingRod fishingRod = new FishingRod(); // 2.声明垂钓者 FishingMan jiangTaiGong = new FishingMan("姜太公"); // 3.分配鱼竿 jiangTaiGong.FishingRod = fishingRod; // 4.注册观察者 //fishingRod.FishingEvent += new FishingEventHandler().HandleEvent(); // 5.循环钓鱼 while (jiangTaiGong.FishCount < 5) { jiangTaiGong.Fishing(); Console.WriteLine("------------------------------"); Thread.Sleep(TimeSpan.FromSeconds(1)); } Console.ReadKey(); }
public static void SimpleObserverTest() { Console.WriteLine("简单实现的观察者模式:"); Console.WriteLine("======================="); //1、初始化鱼竿 var fishingRod = new FishingRod(); //2、声明垂钓者 var jeff = new FishingMan("Tommy"); //3、将垂钓者观察鱼竿 fishingRod.AddSubscriber(jeff); //4、循环钓鱼 while (jeff.FishCount < 100) { fishingRod.Fishing(); Console.WriteLine("-------------------"); //睡眠5s Thread.Sleep(5000); } }
public void Test1() { FishingRod fishingRod = new FishingRod(); FishingMan man = new FishingMan("张三"); man.FishingRod = fishingRod; /* * ldftn instance void [EventBusV2]EventBusV2.FishingMan::Update(valuetype [EventBusV2]EventBusV2.FishType) * newobj instance void [EventBusV2]EventBusV2.FishingRod/FishingHandler::.ctor(object, native int) * callvirt instance void [EventBusV2]EventBusV2.FishingRod::add_FishingEvent(class [EventBusV2]EventBusV2.FishingRod/FishingHandler) * */ //fishingRod.FishingEvent += new FishingEventHandler().HandleEvent; fishingRod构造函数已实现 while (man.FishCount < 5) { man.Fishing(); Console.WriteLine("-------------------------"); Thread.Sleep(3000); } Assert.Equal(5, man.FishCount); }
private static void EventBusTest() { Console.WriteLine("事件总线来钓鱼:"); Console.WriteLine("======================="); //1、初始化鱼竿 var fishingRod = new FishingRod(); //2、声明垂钓者 var jeff = new FishingMan("小明"); //3.分配鱼竿 jeff.FishingRod = fishingRod; //4、循环钓鱼 while (jeff.FishCount < 5) { jeff.Fishing(); Console.WriteLine("-------------------"); //睡眠2s Thread.Sleep(2000); } }