时间:2021-05-19
复制代码 代码如下:
using System;
using System.Collections.Generic;
namespace Demo
{
#region 抽象层,定义了观察者模式
/// <summary>
/// (抽象)新闻
/// </summary>
public interface INews
{
void SubScribe(ISubscriber s);
void UnSubScribe(ISubscriber s);
void Publish(string newsTitle); //在具体实现的过程中建立发布与订阅的联系
}
/// <summary>
/// (抽象)订阅者
/// </summary>
public interface ISubscriber
{
void Read(string newsTitle);
}
#endregion
#region 实现层,是对抽象层的具体实现
/// <summary>
/// (具体)新闻
/// </summary>
public class ITNews : INews
{
private List<ISubscriber> readers = new List<ISubscriber>();
public void SubScribe(ISubscriber s)
{
readers.Add(s);
}
public void UnSubScribe(ISubscriber s)
{
if (readers.Count >= 0)
{
readers.Remove(s);
}
}
public void Publish(string newsTitle)
{
foreach (ISubscriber i in readers)
{
i.Read(newsTitle); //<<<<<发布的时候订阅>>>>>
}
}
}
/// <summary>
/// (具体)订阅者
/// </summary>
public class Subscriber : ISubscriber
{
private string subscriber = string.Empty;
public Subscriber(string subscriber)
{
this.subscriber = subscriber;
}
public void Read(string newsTitle)
{
Console.WriteLine(string.Format("{0}阅读了IT新闻\"{1}\"", subscriber, newsTitle));
}
}
#endregion
public class Pro
{
static void Main(string[] args)
{
ITNews news = new ITNews();
Subscriber zs = new Subscriber("张三"),
ls = new Subscriber("李四"),
ww = new Subscriber("王五");
news.SubScribe(zs);
news.SubScribe(ls);
news.SubScribe(ww);
news.UnSubScribe(ls); //张三取消订阅
news.Publish("2014年移动电商攻坚战:阿里巴巴如何破局?");
news.Publish("余额宝还能重回高收益率吗?");
Console.WriteLine();
Console.ReadKey();
}
}
}
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
推荐阅读:JavaScript观察者模式(经典)1.什么是观察者模式观察者模式有时也称为发布--订阅模式,在观察者模式中,有一个观察者可以管理所有的目标,等到有
本文实例讲述了Python设计模式之观察者模式。分享给大家供大家参考,具体如下:观察者模式是一个软件设计模式,一个主题对象包涵一系列依赖他的观察者,自动通知观察
本文实例讲述了PHP使用标准库spl实现的观察者模式。分享给大家供大家参考,具体如下:前面使用纯php实现了一个观察者模式(php观察者模式),现在使用php标
本文实例讲述了PHP观察者模式。分享给大家供大家参考,具体如下:_observers=array();}//增加一个观察者对象publicfunctionatt
观察者模式复制代码代码如下:interfaceSubject{publicfunctionAttach($Observer);//添加观察者publicfunc