手机
当前位置:查字典教程网 >编程开发 >C#教程 >简单的观察者模式示例分享
简单的观察者模式示例分享
摘要:复制代码代码如下:usingSystem;usingSystem.Collections.Generic;namespaceDemo{#re...

复制代码 代码如下:

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# GDI+简单绘图的具体操作步骤(二)

C#之IP地址和整数互转的小例子

将c#编写的程序打包成应用程序的实现步骤分享(安装,卸载) 图文

c# 匿名方法的小例子

C#制作鹰眼的详细全过程(带注释)实例代码

C#实现的最短路径分析

深入C#字符串和享元(Flyweight)模式的使用分析

C#全角半角转换函数代码分享

C# 骑士飞行棋的源码(分享)

c#初学简单程序实例代码介绍

精品推荐
分类导航