博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
观察者模式
阅读量:5052 次
发布时间:2019-06-12

本文共 2845 字,大约阅读时间需要 9 分钟。

 

 

观察者模式
namespace ConsoleApplication1{    ///     /// 发布信息者    ///     public interface ISubject    {        ///         /// 用于登记需要推送的用户        ///         ///         void RegisterObserver(IObServer observer);        ///         /// 将用户剔除出推送列表        ///         ///         void RemoveObserver(IObServer observer);        ///         /// 推送服务        ///         void NotifyObserver();    }    ///     /// 信息接受者    ///     public interface IObServer    {        ///         /// 当Subject信息发送时,用于更新        ///         ///         void Update(string msg);    }    ///     /// 新闻集团    ///     public class NewsGrop : ISubject    {        private string _NewsId;        IList
services; public NewsGrop() { services = new List
(); } ///
/// 订阅报刊 /// ///
public void RegisterObserver(IObServer customer) { services.Add(customer); } ///
/// 发行报刊 /// ///
public void NotifyObserver() { Console.WriteLine(string.Format("{0}发行!", _NewsId)); foreach (var item in services) { item.Update(_NewsId); } } public void RemoveObserver(IObServer customer) { if (services.IndexOf(customer) != 0) { services.Remove(customer); } } public void SetNewsId(string newsId) { this._NewsId = newsId; } } ///
/// 收藏爱好者 /// public class Collector : IObServer { public Collector() { } public void Update(string msg) { Console.WriteLine(string.Format("收藏{0}...", msg)); } } ///
/// 一般用户 /// public class GeneralUser : IObServer { public GeneralUser() { } public void Update(string msg) { Console.WriteLine(string.Format("慢慢阅读{0}...", msg)); } } ///
/// 主程序 /// class Program { static void Main(string[] args) { NewsGrop news = new NewsGrop(); Collector c1 = new Collector(); GeneralUser g1 = new GeneralUser(); GeneralUser g2 = new GeneralUser(); news.RegisterObserver(c1); news.RegisterObserver(g1); news.RegisterObserver(g2); news.SetNewsId(string.Format("第{0}期", 1)); news.NotifyObserver(); Console.WriteLine(); news.RemoveObserver(g2); news.SetNewsId(string.Format("第{0}期", 2)); news.NotifyObserver(); Console.WriteLine(); Console.ReadLine(); } }}

 

转载于:https://www.cnblogs.com/jes_shaw/archive/2013/02/25/2932310.html

你可能感兴趣的文章
CQOI2007 涂色
查看>>
Delphi进制转换(二进制/十进制/十六进制)
查看>>
数据结构:冒泡排序及其改进、插入排序和希尔排序
查看>>
HTML基础 --- HTML属性
查看>>
mongodb复制集Replica Set使用简介
查看>>
poi 读取excel row.getCell() 为null
查看>>
bzoj 1646 抓住那头牛
查看>>
SQL面试题
查看>>
JavaScript_Util_04
查看>>
给网站添加选项卡图标
查看>>
android 2个按钮 显示在同一列
查看>>
4.22 IP通信基础
查看>>
Intellij IDEA使用总结(转载)
查看>>
iOS如何隐藏各种bar
查看>>
IIS解决上传文件大小限制
查看>>
Longest Consecutive Sequence hashset
查看>>
JMS-mq-发布/订阅
查看>>
JAVA-I/O(4)-字符流-Reader
查看>>
【转】周杰伦在哪几届金曲奖中分别得的哪些奖?
查看>>
第三阶段:1.数据分析:5.关键数据-转化率
查看>>