一、定义
多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
二、示例
下面用委托、事件, 实现观察者模式
1.Publisher.cs
// 定义发布者 public class Publisher { // 声明事件 public event EventHandler OnPublish; public void Publish() { Console.WriteLine("发布了一条消息"); // 触发事件 OnPublish?.Invoke(this, EventArgs.Empty); } }
2.Subscriber.cs
// 定义订阅者 public class Subscriber { public string Name { get; } public Subscriber(string name) { Name = name; } // 定义事件处理程序 public void Handle(object sender, EventArgs args) { Console.WriteLine($"{Name} 收到了一条消息"); } }
3.Program.cs
internal class Program { static void Main(string[] args) { var publisher = new Publisher(); // 创建三个订阅者 var subscriber1 = new Subscriber("订阅者1"); var subscriber2 = new Subscriber("订阅者2"); var subscriber3 = new Subscriber("订阅者3"); // 将订阅者添加到发布者的订阅列表中 publisher.OnPublish += subscriber1.Handle; publisher.OnPublish += subscriber2.Handle; publisher.OnPublish += subscriber3.Handle; // 发布一条消息 publisher.Publish(); // 将订阅者从发布者的订阅列表中移除 publisher.OnPublish -= subscriber2.Handle; // 再次发布一条消息 publisher.Publish(); } }
运行结果:
标签:publisher,Handle,订阅,观察者,模式,Subscriber,OnPublish,public From: https://www.cnblogs.com/xiao-wo-niu/p/17460013.html