欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

把通知這個(gè)動(dòng)作抽象成一個(gè)接口。代碼如下所示:

public interface IService
{
    void Notif();
}

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

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

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

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)建軟件公司實(shí)例、創(chuàng)建觀察者實(shí)例、注冊(cè)或取消觀察者等。

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

總結(jié):

把一個(gè)通知的動(dòng)作抽象成接口
觀察者如果想接收到通知,就實(shí)現(xiàn)通知接口
被觀察對(duì)象做3件事情:維護(hù)觀察者的集合,注冊(cè)/取消觀察者,發(fā)起動(dòng)作遍歷觀察者集合讓通知接口來(lái)做事

希望本文所述對(duì)大家C#程序設(shè)計(jì)的學(xué)習(xí)有所幫助。

相關(guān)文章

  • C#通過(guò)委托調(diào)用Button單擊事件的方法

    C#通過(guò)委托調(diào)用Button單擊事件的方法

    本文給大家分享的是通過(guò)委托取消Button事件switch-case的方法,十分的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。
    2015-05-05
  • C#之Windows自帶打印功能的實(shí)現(xiàn)

    C#之Windows自帶打印功能的實(shí)現(xiàn)

    這篇文章主要介紹了C#之Windows自帶打印功能的實(shí)現(xiàn)方式,具有很好的價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • c# linq的差集,并集,交集,去重代碼(分享)

    c# linq的差集,并集,交集,去重代碼(分享)

    下面小編就為大家分享一篇c# linq的差集,并集,交集,去重代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • C#如何將Excel轉(zhuǎn)換為PDF

    C#如何將Excel轉(zhuǎn)換為PDF

    這篇文章主要介紹了C#如何將Excel轉(zhuǎn)換為PDF問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • C# 圖片格式轉(zhuǎn)換的實(shí)例代碼

    C# 圖片格式轉(zhuǎn)換的實(shí)例代碼

    這篇文章主要介紹了C# 圖片格式轉(zhuǎn)換的實(shí)例代碼,文中講解非常詳細(xì),幫助大家更好的理解和學(xué)習(xí)c#,感興趣的朋友可以了解下
    2020-08-08
  • C#操作數(shù)據(jù)庫(kù)總結(jié)(vs2005+sql2005)

    C#操作數(shù)據(jù)庫(kù)總結(jié)(vs2005+sql2005)

    C#操作數(shù)據(jù)庫(kù)總結(jié),每次做項(xiàng)目都會(huì)用到數(shù)據(jù)庫(kù),對(duì)數(shù)據(jù)庫(kù)的操作都是糊里糊涂從書(shū)里找代碼用。通過(guò)昨天晚上與今天早上的努力,把數(shù)據(jù)庫(kù)的操作整理了一下,下面把整理結(jié)果做個(gè)小結(jié)
    2012-09-09
  • C#單例類的實(shí)現(xiàn)方法

    C#單例類的實(shí)現(xiàn)方法

    這篇文章主要介紹了C#單例類的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • C#實(shí)現(xiàn)打字游戲

    C#實(shí)現(xiàn)打字游戲

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)打字游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • C# pictureBox用法案例詳解

    C# pictureBox用法案例詳解

    這篇文章主要介紹了C# pictureBox用法案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • c#?COM組件原理詳解

    c#?COM組件原理詳解

    本文主要介紹了c#?COM組件原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08

最新評(píng)論