码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式面对面之订阅模式

时间:2017-11-09 15:10:50      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:none   ons   +=   display   ide   static   ring   oid   es2017   

订阅模式

订阅模式主要涉及到三种对象:订阅对象,发布对象,分发对象。

案例没对这三种对象做抽像,大家可以根据应用场景去扩展。

类图:

技术分享技术分享

常用的实现方式:

订阅对象

技术分享
//订阅对象
public class Subscribe
    {

        public string Name;

        public Subscribe(string name)
        {
            Name = name;
        }
        public void Receive(string message)
        {
            Console.WriteLine($"{Name}评价:{message}");
        }
    }
View Code

发布对象

技术分享
//发布对象
 public class Publisher
    {
        public delegate void PublisherEventHandler(string message);
        public event PublisherEventHandler PublisherEvent;

        public void Publish()
        {
            PublisherEvent?.Invoke("这首歌曲真好听!");
        }

    }
View Code

 分发对象

技术分享
//分发对象
 public class Destributer
    {
        public void Destribute()
        {
            var subscribe1=new Subscribe("subscribe1");
            var subscribe2 = new Subscribe("subscribe2");

            var publisher = new Publisher();
            publisher.PublisherEvent += subscribe1.Receive;
            publisher.PublisherEvent += subscribe2.Receive;

            publisher.Publish();

        }

    }
View Code

 调用

技术分享
class Program
    {
        static void Main(string[] args)
        {
            var destributer=new Destributer();

            destributer.Destribute();
            Console.ReadLine();
        }
    }
View Code

 使用场景:

常用来解决消息的分发。

设计模式面对面之订阅模式

标签:none   ons   +=   display   ide   static   ring   oid   es2017   

原文地址:http://www.cnblogs.com/dujq/p/7808618.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!