国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

簡單的觀察者模式示例分享

2020-01-24 02:46:20
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:

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();
        }
    }
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁陕县| 禹州市| 邯郸县| 比如县| 内乡县| 炎陵县| 布尔津县| 白银市| 客服| 广河县| 临泉县| 伊宁市| 同仁县| 聊城市| 昌平区| 德庆县| 即墨市| 筠连县| 新源县| 久治县| 焦作市| 兴宁市| 建昌县| 元江| 东方市| 多伦县| 盖州市| 益阳市| 泗洪县| 施秉县| 赞皇县| 武宣县| 广安市| 砚山县| 东辽县| 张家港市| 永登县| 丹江口市| 鄂温| 肇源县| 德保县|