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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式面对面之订阅模式相关的知识,希望对你有一定的参考价值。

订阅模式

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

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

类图:

技术分享技术分享

常用的实现方式:

订阅对象

技术分享
//订阅对象
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

 使用场景:

常用来解决消息的分发。

以上是关于设计模式面对面之订阅模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式 行为型模式 -- 观察者模式(发布-订阅(Publish/Subscribe)模式)

Javascript设计模式之发布-订阅模式

RabbitMQ : 订阅者模式之路由模式 ( direct )

设计模式面对面之工厂模式

设计模式面对面之命令模式

设计模式面对面之单例模式