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();
}
}
}
如对本文有疑问,
点击进行留言回复!!
相关文章:
-
-
C#实现猜数字游戏
本文实例为大家分享了c#实现猜数字游戏具体代码,供大家参考,具体内容如下给定一个0-100的随机数字猜其大小题目样式:电脑产生一个0到100之间的随机数字,并且...
[阅读全文]
-
-
C# 可空类型的具体使用
在项目中我们经常会遇到可为空类型,那么到底什么是可为空类型呢?下面我们将从4个方面为大家剖析。1、可空类型基础知识顾名思义,可空类型指的就是某个对象类型可以为空...
[阅读全文]
-
-
-
C#实现猜数字小游戏
本文实例为大家分享了c#实现猜数字小游戏的具体代码,供大家参考,具体内容如下效果如图:代码:using system;using system.collecti...
[阅读全文]
-
-
C#实现简单俄罗斯方块
最近在看《.net游戏编程入门经典 c#篇》 第一章介绍了如何制作俄罗斯方块,自己试了试按照书上的步骤,可算是完成了。于是写下这篇文章留作纪念。1.类的设计在充...
[阅读全文]
-
-
网友评论