[英]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.