简单的观察者模式示例分享_C#教程-查字典教程网
简单的观察者模式示例分享
简单的观察者模式示例分享
发布时间:2016-12-28 来源:查字典编辑
摘要:复制代码代码如下: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#教程学习
    热门C#教程学习
    编程开发子分类