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

C#觀察者模式(Observer Pattern)實例教程

 更新時間:2014年09月12日 15:24:12   投稿:shichen2014  
這篇文章主要介紹了C#觀察者模式(Observer Pattern),主要以一個實例的形式講述了C#觀察者模式的實現(xiàn)過程,詳細講述了接口的定義、通知及動作的實現(xiàn)方法,需要的朋友可以參考下

本文以實例形式簡單講述了C#觀察者模式,分享給大家供大家參考。具體實現(xiàn)方法如下:

現(xiàn)在假設有一個軟件公司,每當有新產(chǎn)品推出,就把信息通知到一些客戶。

把通知這個動作抽象成一個接口。代碼如下所示:

public interface IService
{
    void Notif();
}

客戶如果想獲得通知,就需要實現(xiàn)以上的接口。這里的客戶被看作是觀察者。

public class CustomerA : IService
{
    public void Notif()
    {
      Console.WriteLine("客戶A收到通知了~~");
    }
}
public class CustomerB : IService
{
    public void Notif()
    {
      Console.WriteLine("客戶B收到通知了~~");
    }
}

作為軟件公司來講,維護著一個客戶的集合,并提供注冊、取消注冊的方法,往這個集合添加或刪除客戶。每當有通知的時候,就遍歷客戶集合,讓IService執(zhí)行通知。軟件公司可以看作是一個被觀察對象,或者說是發(fā)起動作的源頭。

public class MyCompany
{
    private IList<IService> subscribers = new List<IService>();
    public void Subscribe(IService subscriber)
    {
      subscribers.Add(subscriber);
    }
    public void CancelSubscribe(IService subscriber)
    {
      subscribers.Remove(subscriber);
    }
    public void SendMsg()
    {
      foreach (IService service in subscribers)
      {
        service.Notif();
      }
    }
}

客戶端創(chuàng)建軟件公司實例、創(chuàng)建觀察者實例、注冊或取消觀察者等。

class Program
{
    static void Main(string[] args)
    {
      MyCompany company = new MyCompany();
      IService customerA = new CustomerA();
      IService customerB = new CustomerB();
      company.Subscribe(customerA);
      company.Subscribe(customerB);
      company.SendMsg();
      Console.ReadKey();
    }
}

總結:

把一個通知的動作抽象成接口
觀察者如果想接收到通知,就實現(xiàn)通知接口
被觀察對象做3件事情:維護觀察者的集合,注冊/取消觀察者,發(fā)起動作遍歷觀察者集合讓通知接口來做事

希望本文所述對大家C#程序設計的學習有所幫助。

相關文章

  • C#面向對象設計原則之接口隔離原則

    C#面向對象設計原則之接口隔離原則

    這篇文章介紹了C#面向對象設計原則之接口隔離原則,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • C#中Convert.ToDecimal()報錯問題的解決

    C#中Convert.ToDecimal()報錯問題的解決

    這篇文章主要給大家介紹了關于C#中Convert.ToDecimal()報錯問題的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-08-08
  • 詳解C#操作XML的方法總結

    詳解C#操作XML的方法總結

    這篇文章主要為大家詳細介紹了C#對XML文件進行一些基本操作的方法,譬如:生成xml文件、修改xml文件的節(jié)點信息等,需要的可以參考一下
    2022-11-11
  • 淺談C# async await 死鎖問題總結

    淺談C# async await 死鎖問題總結

    這篇文章主要介紹了淺談C# async await 死鎖問題總結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • C# 設計模式系列教程-抽象工廠模式

    C# 設計模式系列教程-抽象工廠模式

    抽象工廠模式為創(chuàng)建一組相關或相互依賴的對象提供一個接口,而且無需指定他們的具體類。
    2016-06-06
  • C#使用channel實現(xiàn)Plc異步任務之間的通信

    C#使用channel實現(xiàn)Plc異步任務之間的通信

    在C#的并發(fā)編程中,Channel是一種非常強大的數(shù)據(jù)結構,用于在生產(chǎn)者和消費者之間進行通信,本文將給大家介紹C#使用channel實現(xiàn)Plc異步任務之間的通信,文中有相關的代碼示例供大家參考,感興趣的朋友跟著小編一起來看看吧
    2024-05-05
  • 利用C#版OpenCV實現(xiàn)圓心求取實例代碼

    利用C#版OpenCV實現(xiàn)圓心求取實例代碼

    這篇文章主要給大家介紹了關于如何利用C#版OpenCV實現(xiàn)圓心求取的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-05-05
  • .net使用cap實現(xiàn)消息異步處理

    .net使用cap實現(xiàn)消息異步處理

    CAP 是一個基于 .NET Standard 的 C# 庫,它是一種處理分布式事務的解決方案,同樣具有 EventBus 的功能,它具有輕量級、易使用、高性能等特點,本文給大家介紹了.net下使用cap實現(xiàn)消息異步處理,需要的朋友可以參考下
    2024-05-05
  • C#中數(shù)組段用法實例分析

    C#中數(shù)組段用法實例分析

    這篇文章主要介紹了C#中數(shù)組段用法,實例分析了C#數(shù)組段的定義、功能及使用方法,需要的朋友可以參考下
    2015-05-05
  • .net4.5使用async和await異步編程實例

    .net4.5使用async和await異步編程實例

    .net4.5使用async和await異步編程實例,大家參考使用吧
    2013-12-12

最新評論

喀喇沁旗| 榆林市| 修水县| 长岭县| 武山县| SHOW| 禹州市| 成都市| 闻喜县| 望谟县| 洪泽县| 贵州省| 宁海县| 保靖县| 同心县| 利津县| 小金县| 乾安县| 中方县| 汝阳县| 台南县| 宜春市| 紫阳县| 定州市| 福安市| 云梦县| 乌海市| 铅山县| 海口市| 上蔡县| 宜昌市| 宁化县| 广水市| 池州市| 仙居县| 托克托县| 临桂县| 全椒县| 东海县| 铁岭市| 三河市|