您的位置:首页 > 娱乐 > 明星 > 建立网站不公开_深圳有什么好玩的_谷歌google 官网下载_百度里面的站长工具怎么取消

建立网站不公开_深圳有什么好玩的_谷歌google 官网下载_百度里面的站长工具怎么取消

2025/2/24 9:35:13 来源:https://blog.csdn.net/weixin_43626218/article/details/144463263  浏览:    关键词:建立网站不公开_深圳有什么好玩的_谷歌google 官网下载_百度里面的站长工具怎么取消
建立网站不公开_深圳有什么好玩的_谷歌google 官网下载_百度里面的站长工具怎么取消

前言

观察者模式

观察者模式:定义了一种对象之间的一对多依赖关系,消息发布者发布通知时,它的所有订阅者(依赖)对象都会自动收到通知并进行相应的更新。

代码

//抽象观察者类
public abstract class Observer
{protected string name;public string Name { get { return name; } }public Observer(string name){this.name = name;}public abstract void Update(string message);
}//具体观察者类1:主题订阅类
public class SubscribeSubject : Observer
{public SubscribeSubject(string name) : base(name){}public override void Update(string message){Console.WriteLine($"[{name}] received a subject message : {message}");}
}
//具体观察者类2:消息订阅类
public class MessageReceiver : Observer
{public MessageReceiver(string name) : base(name){}public override void Update(string message){Console.WriteLine($"[{name}] received a subject message : {message}");}
}//(抽象)主题接口
public interface Subject
{void Attch(Observer observer);void Detach(Observer observer);void NotifyObservers(string message);
}
//具体主题:发布主题类
public class PublishSubject : Subject
{public List<Observer> Observers = new List<Observer>();public void Attch(Observer observer){Observers.Add(observer);Console.WriteLine($"Add an subscriber[type={observer.GetType().Name}],[ name = {observer.Name}]");}public void Detach(Observer observer){Observers.Remove(observer);Console.WriteLine($"Removes an subscriber: {observer.Name}");}public void NotifyObservers(string message){Console.WriteLine($"publish a notify:{message}");foreach (var item in Observers){item.Update(message);}}
}/** 行为型模式:Behavioral Pattern* 观察者模式:Observer Pattern*/
internal class Program
{static void Main(string[] args){//创建观察者Observer observer1 = new SubscribeSubject("User1");Observer observer2 = new SubscribeSubject("User2");Observer observer3 = new SubscribeSubject("User3");Observer observer4 = new SubscribeSubject("User4");Observer observer5 = new MessageReceiver("User5");//创建发布者Subject pubulisher = new PublishSubject();//发布者记录观察者pubulisher.Attch(observer1);pubulisher.Attch(observer2);pubulisher.Attch(observer3);pubulisher.Attch(observer4);pubulisher.Attch(observer5);//发布消息Console.WriteLine();pubulisher.NotifyObservers("Hellow users.");Console.WriteLine();pubulisher.Detach(observer1);Console.WriteLine();pubulisher.NotifyObservers("see you again,users!");Console.ReadLine();}
}

运行结果

在这里插入图片描述

版权声明:

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

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