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

首頁 > 編程 > C# > 正文

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

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

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

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

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

public interface IService{    void Notif();}

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

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

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

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

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

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

總結:

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武邑县| 桂平市| 南康市| 沂水县| 黄山市| 东兰县| 武汉市| 遵义市| 陈巴尔虎旗| 滕州市| 隆回县| 临湘市| 嘉兴市| 容城县| 陆良县| 阜新| 康保县| 新宁县| 祁门县| 邵阳市| 绥芬河市| 青河县| 抚远县| 隆回县| 周口市| 安宁市| 普陀区| 阳高县| 大安市| 垣曲县| 黎城县| 宜兰市| 德昌县| 桃园县| 霍邱县| 屯昌县| 溆浦县| 黎川县| 卢氏县| 溆浦县| 宁城县|