zoukankan      html  css  js  c++  java
  • 委托与事件 示例

    namespace ConsoleApplication2
    {
        class Program
        {
            static void Main(string[] args)
            {
                Me eventSource = new Me("Learning Hard");
    
                Friend1 obj1 = new Friend1();
                Friend2 obj2 = new Friend2();
    
                eventSource.BirthDayEvent += new BirthDayEventHandle(obj1.SendGift);
                eventSource.BirthDayEvent += new BirthDayEventHandle(obj2.Buycake);
                eventSource.TimeUp();
                Console.Read();
             }
        }
         
    
        public class BirthdayEventArgs : EventArgs
        {
            private readonly string name;
            public string Name
            {
                get { return name; }
            }
            
            public BirthdayEventArgs(string name)
            {
                this.name = name;
            }
    
        }
    
        public delegate void BirthDayEventHandle(object sender, BirthdayEventArgs e);
    
        public class Subject
        {
            public event BirthDayEventHandle BirthDayEvent;
    
            protected virtual void Notify(BirthdayEventArgs e)
            {
                BirthDayEventHandle temp = Interlocked.CompareExchange(ref BirthDayEvent, null, null);
                if(temp != null)
                {
                    temp(this, e);
                }
            }
        }
    
        public class Me : Subject
        {
            private string name;
            public Me(string name)
            {
                this.name = name;
            }
    
            public void TimeUp()
            {
                BirthdayEventArgs eventarg = new BirthdayEventArgs(name);
                this.Notify(eventarg);
            }
        }
    
    
        // 好友对象
        public class Friend1
        {
            public void SendGift(object sender, BirthdayEventArgs e)
            {
                Console.WriteLine(e.Name + " 生日到了,我要送礼物");
            }
        }
        public class Friend2
        {
            public void Buycake(object sender, BirthdayEventArgs e)
            {
                Console.WriteLine(e.Name + " 生日到了,我要准备买蛋糕");
            }
        }
    
    
    }
  • 相关阅读:
    单例模式 & Init(allocWithZone:)
    Go 初体验
    Go 初体验
    beego 初体验
    beego 初体验
    beego 初体验
    beego 初体验
    beego 初体验
    beego 初体验
    beego 初体验
  • 原文地址:https://www.cnblogs.com/tianjinquan/p/2938660.html
Copyright © 2011-2022 走看看