コード例 #1
0
ファイル: Program.cs プロジェクト: AaronCore/.Net5Projects
        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);
            }
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: justlucky/DesignPattern
        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();
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: TommyVV/DesignPattern
        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);
            }
        }
コード例 #4
0
ファイル: UnitTest1.cs プロジェクト: liuzhixin405/exercise
        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);
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: AaronCore/.Net5Projects
        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);
            }
        }