C#设计模式之订阅发布模式详解(实例演示)5

46 篇文章 0 订阅
15 篇文章 5 订阅

namespace DemoTest
{
    //声明委托类型
    public delegate void MyFuncDelegate(object ob);
    //声明委托类型
    public delegate void MyFuncDelegate2(object ob);
    //调用测试
    public class DelegateEventTest
    {
    //测试1
        public static void Main1()
        {
            //创建发布者
            Release release = new Release();
            //创建订阅者
            RegeditA RA = new RegeditA();
            //创建订阅者
            RegeditB RB = new RegeditB();
            //订阅者注册到发布者
            release. MyFuncDelegateEvent += RA.Fun;
            //订阅者注册到发布者
            release. MyFuncDelegateEvent += RB.Fun;
            //发布者通知,所有注册者的注册方法都被执行了
            release.MyFuncDelegateEvent("object");
        }
       //测试2
        public static void Main2()
        {
            //创建发布者
            Release release = new Release();
            //创建订阅者(构造函数内部被注册到发布者了,所以后面不用再注册了)
            RegeditC RC = new RegeditC();
            //创建订阅者(构造函数内部被注册到发布者了,所以后面不用再注册了)
            RegeditC RC2 = new RegeditC();
            // //发布者通知,所有注册者的注册方法都被执行了
            Release.MyFuncDelegate2Event("object");
        }

    }
    //发布者
    public class Release
    {
        //发布事件
        public MyFuncDelegate MyFuncDelegateEvent;
        //发布事件
        public static MyFuncDelegate2 MyFuncDelegate2Event;
    }
    //订阅者A
    public class RegeditA
    {
        //订阅者收到发布者的通知后要执行的方法(被注册的方法)    
        public void Fun(object ob)
        {
            MessageBox.Show("A");
        }
    }
    //订阅者B
    public class RegeditB
    {
        //订阅者收到发布者的通知后要执行的方法(被注册的方法)   
        public void Fun(object ob)
        {
            MessageBox.Show("B");
        }
    }
    //订阅者C(注意:构造函数中有注册的方法,所以每创建一次实例对应的实例默认都为发布者注册了一次)
    public class RegeditC
    {
        //注册事件(订阅发布者发布的事件)
        public RegeditC()
        {
            Release.MyFuncDelegate2Event += this.Fun;
        }
        //订阅者收到发布者的通知后要执行的方法(被注册的方法)   
        public void Fun(object ob)
        {
            MessageBox.Show("C"+this.GetHashCode().ToString());
        }
    }
}
 

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值