2010-08-17 24 views
3

我想知道爲什麼.NET框架沒有類似於Java功能的對(Observer/Observable)接口?爲什麼.NET沒有內置的像Java一樣的Observer模式?

編輯: 是的,我知道的事件和委託,但使用這些接口是這個DP的簡單和書生氣的做法是不是?

+1

「使用這些接口是這種DP的簡單和書籍化的方法不是嗎?」 - 如果這是個問題,那麼這不是一個問題! – 2010-08-17 07:42:07

回答

6

因爲.NET有實際的事件和委託。 Java缺乏這些基本的構造,不得不求助於醜陋的黑客(你的Observable接口)來傳遞「方法指針」。

+0

醜陋的黑客?那麼爲什麼在NET4.0中他們引入了Observable接口? (見下回答) – Arseny 2010-08-17 07:30:27

+1

@Arseny - 他們有相似的名字,但工作方式不同。 – 2010-08-17 07:41:16

+1

這是一個解釋問題,有些語言是單向的,另一種是另一種語言。聲明是,恕我直言,不是很有幫助......和.Net確實提供了一個IObservable來提供這個功能。 – AxelEckenberger 2010-08-17 07:44:08

1

你去哪裏了。它被稱爲事件和代表。是的,這是一種黑客行爲,但它起作用,更多的人更喜歡使用功能內置的語言來使用自己必須輸入的設計模式。語言功能已經調試並準備就緒。

4

你可以用事件和意大利麪代碼實現同樣的事情,它們會讓你瘋狂地嘗試清理它們,因爲它們將自己鎖定到非一次性內存塊中。

如果您還沒有.Net 4,請使用衆所周知的觀察者模式,並用老式的方式 - 手工輸入。

觀察者模式不是簡單地寫事件,它是可重用和可擴展代碼的基礎。它也是解決方案的一種更加分離和優雅的方法。

相關問題