最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

簡(jiǎn)單的觀察者模式示例分享

 更新時(shí)間:2014年03月04日 09:36:03   作者:  
這篇文章主要介紹了簡(jiǎn)單的觀察者模式示例,抽象層定義了觀察者模式,實(shí)現(xiàn)層是對(duì)抽象層的具體實(shí)現(xiàn),需要的朋友可以參考下

復(fù)制代碼 代碼如下:

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);   //在具體實(shí)現(xiàn)的過(guò)程中建立發(fā)布與訂閱的聯(lián)系
    }

    /// <summary>
    /// (抽象)訂閱者
    /// </summary>
    public interface ISubscriber
    {
        void Read(string newsTitle);
    }
    #endregion

    #region 實(shí)現(xiàn)層,是對(duì)抽象層的具體實(shí)現(xiàn)
    /// <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);          //<<<<<發(fā)布的時(shí)候訂閱>>>>>
            }
        }
    }

    /// <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年移動(dòng)電商攻堅(jiān)戰(zhàn):阿里巴巴如何破局?");
            news.Publish("余額寶還能重回高收益率嗎?");

            Console.WriteLine();
            Console.ReadKey();
        }
    }
}

您可能感興趣的文章:

相關(guān)文章

  • unity實(shí)現(xiàn)手機(jī)端搖桿控制人物移動(dòng)

    unity實(shí)現(xiàn)手機(jī)端搖桿控制人物移動(dòng)

    這篇文章主要為大家詳細(xì)介紹了unity實(shí)現(xiàn)手機(jī)端搖桿控制人物移動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • c#使用EPPlus封裝excel表格導(dǎo)入功能的問(wèn)題

    c#使用EPPlus封裝excel表格導(dǎo)入功能的問(wèn)題

    這篇文章主要介紹了c#使用EPPlus封裝excel表格導(dǎo)入功能的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • 分享用于操作FTP的客戶(hù)端C#類(lèi)

    分享用于操作FTP的客戶(hù)端C#類(lèi)

    用.net自帶的FtpWebRequest做的ftp客戶(hù)端得程序,有一個(gè)功能實(shí)現(xiàn)起來(lái)會(huì)非??嚯y,就是移動(dòng)文件和文件夾的功能。所以后來(lái)又找了一個(gè)類(lèi),用socket實(shí)現(xiàn)的,發(fā)現(xiàn)比用ftpWebRequest功能要強(qiáng)?;镜膄tp客戶(hù)端得命令都實(shí)現(xiàn)了。
    2015-05-05
  • asp.net中調(diào)用oracle存儲(chǔ)過(guò)程的方法

    asp.net中調(diào)用oracle存儲(chǔ)過(guò)程的方法

    存儲(chǔ)過(guò)程是在大型數(shù)據(jù)庫(kù)系統(tǒng)中,一組為了完成特定功能的SQL 語(yǔ)句集,存儲(chǔ)在數(shù)據(jù)庫(kù)中經(jīng)過(guò)第一次編譯后再次調(diào)用不需要再次編譯,用戶(hù)通過(guò)指定存儲(chǔ)過(guò)程的名字并給出參數(shù)來(lái)執(zhí)行它,下面給大家介紹下asp.net中調(diào)用oracle存儲(chǔ)過(guò)程的方法,需要的朋友可以參考下
    2015-08-08
  • C#正則表達(dá)式大全

    C#正則表達(dá)式大全

    本文詳細(xì)講解了C#正則表達(dá)式的用法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • c#中Empty()和DefalutIfEmpty()用法分析

    c#中Empty()和DefalutIfEmpty()用法分析

    這篇文章主要介紹了c#中Empty()和DefalutIfEmpty()用法,以實(shí)例形式分析了針對(duì)不同情況下Empty()和DefalutIfEmpty()用法區(qū)別,需要的朋友可以參考下
    2014-11-11
  • 在C#中添加I/O延時(shí)和持續(xù)時(shí)間的實(shí)現(xiàn)方法

    在C#中添加I/O延時(shí)和持續(xù)時(shí)間的實(shí)現(xiàn)方法

    這篇文章主要介紹了在C#中添加I/O延時(shí)和持續(xù)時(shí)間的實(shí)現(xiàn)方法,文中有相關(guān)的代碼示例供大家參考,對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2025-01-01
  • c# 類(lèi)型構(gòu)造器

    c# 類(lèi)型構(gòu)造器

    CLR還支持類(lèi)型構(gòu)造器,也稱(chēng)為靜態(tài)構(gòu)造器。c#類(lèi)型構(gòu)造器可應(yīng)用引用類(lèi)型和值類(lèi)型,永遠(yuǎn)沒(méi)有參數(shù)
    2012-10-10
  • C#接口歸納總結(jié)實(shí)例詳解

    C#接口歸納總結(jié)實(shí)例詳解

    本篇文章通過(guò)實(shí)例代碼對(duì)接口做了詳解,需要的朋友可以參考下
    2017-04-04
  • 詳解C# 線(xiàn)程的掛起與喚醒

    詳解C# 線(xiàn)程的掛起與喚醒

    這篇文章主要介紹了詳解C# 線(xiàn)程的掛起與喚醒,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-05-05

最新評(píng)論

沐川县| 平安县| 伊金霍洛旗| 襄樊市| 浮梁县| 盐池县| 若羌县| 金秀| 黑山县| 嘉祥县| 玉树县| 喀喇| 东光县| 镇沅| 黔江区| 信阳市| 巩义市| 南平市| 永吉县| 嘉义市| 简阳市| 壤塘县| 望都县| 乌什县| 兴业县| 黄浦区| 阜康市| 额尔古纳市| 乐都县| 普陀区| 文登市| 张家川| 定兴县| 蓬溪县| 常州市| 科技| 临湘市| 廊坊市| 阳高县| 富锦市| 青神县|