簡體   English   中英

觀察者模式強制勢在必行的風格

[英]Observer pattern forces imperative style

我在看Coursera中的Reactive Programming課程,它使用Scala實現Observer模式。 在那里,Martin Odersky說觀察者模式迫使命令式編程,我們可以看到,因為訂閱者的處理程序具有Unit類型。

他在這里說: https ://class.coursera.org/reactive-002/lecture/107 9:40

我真的不明白:

1.為什么處理程序需要Unit類型?

2. Observer模式如何強制命令式編程?

我沒有評論發布的視頻,所以我的答案基於OP的原始問題。

根據模式的定義,處理程序是回調; 因此,它們具有Unit返回類型,因為它們描述了將響應通知而執行的一些行為 這是副作用的定義。
因此,觀察者模式是一種本質上命令式的模式: 函數的調用者(例如notifyObservers(觀察者))並不關心函數本身的結果,但它依賴於它將具有的副作用 這是必要的編程。

作為旁注, Unit是結果類型的事實並非絕對必要,但如前所述,它表明除了副作用之外沒有任何興趣 有人可能會對該方法進行一般建模並返回一些更有意義的類型,但由於觀察者模式在實踐中的使用方式,這可能會被忽略......

因為如果它們確實具有除Unit之外的返回類型,則observable調用處理程序的順序變得很重要。 不是說observable現在應該知道返回類型並且應該能夠處理它們,這不是觀察者模式的一部分。

通常,觀察者模式意味着觀察者和觀察者都應該具有狀態,因為觀察者被設計為對可觀察的事件做出反應,並且該模式描述了這些對象的狀態之間的反應。

如果你去wiki並閱讀觀察者模式定義,你會發現in which an object, called the subject, maintains a list of its dependents, called observers, and notifies them automatically of any state changes, ,其中有一個state為它,這已經意味着我們不再擁有FP而且它不可能是純粹的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM