Dot-Net

觀察者模式與事件驅動模型有何不同?

  • June 12, 2016

我是一名高級開發人員,但我沒有接受過大量的正式培訓,雖然我使用過許多設計模式,並且在我作為開發人員的這些年看到它們使用過,但沒有人真的特意去說。“哦,這是一個觀察者模式,或者這是一個單例模式。”

閱讀了一些設計模式,我遇到了觀察者模式,它似乎與 .NET 框架事件的工作方式非常相似。我錯過了一些基本的東西嗎?

.NET 事件模型幾乎是公共語言執行時中觀察者模式的集成實現。.NET 語言直接以特定語言的方式實現觀察者,使用框架對此的內置支持。

在大多數程式語言中,觀察者模式需要定制的開發或庫。

它作為 C#、VB.NET 和大多數其他使用 CLR 建構的語言的語言的一部分免費提供。

來自MSDN

熟悉 FCL 中公開的類型的人會注意到,框架中不存在 IObserver、IObservable 或 ObservableImpl 類型。它們缺席的主要原因是 CLR 使它們在一段時間後過時了。儘管您當然可以在 .NET 應用程序中使用這些構造,但委託和事件的引入提供了一種新的、強大的方法來實現觀察者模式,而無需開發專用於支持該模式的特定類型。事實上,由於委託和事件是 CLR 的一等成員,因此這種模式的基礎被合併到 .NET Framework 的核心中。因此,FCL 在其結構中廣泛使用了觀察者模式。

引用自:https://stackoverflow.com/questions/807778