日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

C#_观察者模式

發布時間:2025/7/14 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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件事情:維護觀察者的集合,注冊/取消觀察者,發起動作遍歷觀察者集合讓通知接口來做事
? ? ? ??

轉載于:https://www.cnblogs.com/ingstyle/p/4081147.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的C#_观察者模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。