当前位置: 首页> 房产> 建筑 > 南昌自助建站_主页设计_网络销售平台排名_学seo推广

南昌自助建站_主页设计_网络销售平台排名_学seo推广

时间:2025/7/22 2:49:00来源:https://blog.csdn.net/leikang111/article/details/142986401 浏览次数:0次
南昌自助建站_主页设计_网络销售平台排名_学seo推广

我们用一个例子来实现观察者模式

发布新闻的时候,我们每一个订阅新闻发布会的人都会看到新闻内容的更新

①定义一个接口,所有的订阅者都要遵循该接口,这样在新闻发生变化的时候,订阅者就能及时收到新闻内容的变化(接口强制实现)

public interface INewsSubscriber
{void update(string news); 
}

②定义几个订阅者,要强制实现接口

public class Newspaper : INewsSubscriber
{public void Update(string news){Console.WriteLine($"Newspaper received news: {news}");}
}public class RadioStation : INewsSubscriber
{public void Update(string news){Console.WriteLine($"Radio Station received news: {news}");}
}

③定义新闻的发布者,他知道有哪些人订阅了新闻,所以就要有添加订阅者移除订阅者通知订阅者发布新闻的功能

#创建一个存储接口的列表,当一个类实现了该接口,就可以直接通过列表.add(该类)来添加该类

public class NewsPublisher
{//存储所有的订阅者private List<INewsSubscriber> subscribers = new List<INewsSubscriber>();//添加订阅者public void Subscribe(INewsSubscriber subscriber){subscribers.Add(subscriber);}//移除订阅者public void Unsubscribe(INewsSubscriber subscriber){subscribers.Remove(subscriber);}//通知订阅者public void Notify(string news){foreach (var subscriber in subscribers){subscriber.Update(news);}}//发布新闻public void PublishNews(string news){Console.WriteLine($"Publishing news: {news}");Notify(news);}
}

④具体实现

创建一个新闻发布媒体→创建几个订阅商→订阅商订阅→媒体发布新闻

public class Program
{public static void Main(){NewsPublisher publisher = new NewsPublisher();Newspaper newspaper = new Newspaper();RadioStation radioStation = new RadioStation();publisher.Subscribe(newspaper);publisher.Subscribe(radioStation);publisher.PublishNews("Breaking News: New programming language released!"); publisher.PublishNews("Weather Alert: Heavy rain expected tomorrow.");}
}

控制台运行的结果是:

Publishing news: Breaking News: New programming language released!
Newspaper received news: Breaking News: New programming language released!
Radio Station received news: Breaking News: New programming language released!Publishing news: Weather Alert: Heavy rain expected tomorrow.
Newspaper received news: Weather Alert: Heavy rain expected tomorrow.
Radio Station received news: Weather Alert: Heavy rain expected tomorrow.

关键字:南昌自助建站_主页设计_网络销售平台排名_学seo推广

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: