观察者模式 布满荆棘的人生 2021-09-17 00:04 382阅读 0赞 ## 15.观察者模式 ## ![70][] public abstract class Blog// 订阅号抽象类 { private List<IObserver> observers = new List<IObserver>(); public string Symbol { get; set; }//描写订阅号的相关信息 public string Info { get; set; }//描写此次update的信息 public Blog(string symbol, string info) { Symbol = symbol; Info = info; } // 对同一个订阅号,新增和删除订阅者的操作 public void AddObserver(IObserver ob) { observers.Add(ob); } public void RemoveObserver(IObserver ob) { observers.Remove(ob); } public void Update() { foreach (IObserver ob in observers)// 遍历订阅者列表进行通知 { if (ob != null) { ob.Receive(this); } } } } public class MyBlog : Blog// 具体订阅号类 { public MyBlog(string symbol, string info) : base(symbol, info) { } } public interface IObserver// 订阅者接口 { void Receive(Blog tenxun); } public class Subscriber : IObserver// 具体的订阅者类 { public string Name { get; set; } public Subscriber(string name) { Name = name; } public void Receive(Blog xmfdsh) { Console.WriteLine("订阅者 {0} 观察到了{1}{2}", Name, xmfdsh.Symbol, xmfdsh.Info); } } class Program { static void Main(string[] args) { Blog xmfdsh = new MyBlog("xmfdsh", "发布了一篇新博客"); xmfdsh.AddObserver(new Subscriber("张三")); xmfdsh.AddObserver(new Subscriber("李四")); xmfdsh.AddObserver(new Subscriber("王五")); xmfdsh.AddObserver(new Subscriber("赵六")); xmfdsh.Update();//更新信息 Console.ReadLine();//输出结果,此时所有的订阅者都已经得到博客的新消息 } } ![70 1][] [70]: /images/20210725/768ac4ab52824063a786012fe91dcc4d.png [70 1]: /images/20210725/bff7a846edc54e508787ffecaead8b15.png
还没有评论,来说两句吧...