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

订阅模式

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

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

类图:

常用的实现方式:

订阅对象

//订阅对象
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

 使用场景:

常用来解决消息的分发。

posted @ 2017-11-09 12:17  杜俊强  阅读(237)  评论(0编辑  收藏  举报