是否有處理回調機制的設計模式?是否有處理回調機制的設計模式?
回答
這將是Observer Pattern - 維基百科
觀察者模式(一個所述 異步的子集發佈/訂閱 圖案)是一個設計模式 在其中一個對象,稱爲 受試者保留其被稱爲觀察員的 家屬的列表,並且 自動通知他們任何 狀態變化,通常通過調用其方法的一個 來通知他們。它主要用於實現分佈式事件處理 系統的 系統。
回調是一種形式戰略設計模式
我同意策略是一個更好的類比Observer。對我來說,回調將是一個函數指針或閉包。由於這些構造不是所有語言都可用的,因此策略就是最近似的。根據你的觀點,你有(錯)幸運的必須創建你選擇的設計模式所需的各種接口。 – Patrick 2009-06-03 20:22:06
幾個。退房http://people.bu.edu/azs/teaching/cs108/2006fall/callback_pattern.pdf,並執行以下操作:
最合適取決於情況。你想用什麼編程語言,你想要做什麼?
觀察者模式浮現在腦海。
一個對象(suscriber)可以適用於另一個對象(publisher)。 當發佈者更改或更新時,他可以通知他所有的用戶。
根據您使用的語言,您可以指定應在通知時調用的函數。
http://en.wikipedia.org/wiki/Observer_pattern
它在Design Patterns: Elements of Reusable Object-Oriented Software [Gang of Four]
External polymorphism很好的描述 - 一個對象具有到另一個對象和一個函數來在該對象上調用的參考。它可以被視爲單一類型,因此您可以混合和匹配對象和函數來調用事件。代表是這種模式的一個例子。這更像是一種C#風格的方法。
Observer pattern - 您使用對象可以實現的接口/基類,並將此接口註冊到事件。更多的Java風格的方法。
檢查我這裏張貼了一個C答案++爲代表/外部多態性的解決方案: raw function pointer from a bound method
這取決於回調是如何使用的。設計模式都是關於傳達你的意圖。
如果你打算讓「在未來的某個時候」要註冊一個或多個回調,它們可以被稱爲通知,你說的觀察員。另外 - 在這種情況下,回調的實際調用通常是「可選的」或基於某種刺激觸發。 (回調可能會也可能不會被調用)
如果您打算傳入「要做的事情」,並在方法中完成(或者用於在後面的過程中「做些事情」),重新談論戰略。另外 - 實際的調用通常會發生。
需要注意的是完全相同的代碼可能是因爲存在 - 這是真正關心你是如何思考的問題,以及如何你希望別人想一想。
我最喜歡這個答案 – 2012-10-09 02:39:08
你提的問題是非常普遍的,最普遍的答案我能想到的是,當你有需要回調的問題使用多態。
多態性允許你指定的接口形式,有關你的回調是如何被使用的軟件合同(或抽象類)。然後客戶可以自由選擇他們認爲適合他們目的的界面的任何實現。
無論是建議使用狀態,策略,觀察者模式或完全不同的東西真的要看情況而定。
我同意關於觀察者模式的其他海報。它是專門爲此目的而設計的。
一個很好的模式描述是Service Callback design pattern。它是SOA模式目錄的一部分,但所描述的模式可以用於非SOA服務的通用組件。
另一個相關的模式是在經典書籍「企業集成模式」,由Hohpe和Woolf描述的Return Address pattern。
Josuttis還在他的書「實踐中的SOA」中談到了回調。他稱之爲Request/Callback message exchange pattern。
- 1. 支持最後回調(例如處理hashchange)的設計模式
- 2. 多回調設計模式?
- 3. 回調設計模式
- 4. 設計模式 - 回調
- 5. 處理彈簧3控制器時有用的設計模式
- 6. 預處理與代理設計模式
- 7. ExtJS是否有標準設計模式
- 8. 錯誤處理的設計模式
- 9. 處理事件的設計模式
- 10. LdrLoadDll是否有內核模式回調?
- 11. 在互聯網上處理大型數據集是否有設計模式?
- 12. 是否有用於提交/回滾消息處理的amqp體系結構的設計模式?
- 13. IOC設計模式是否獨立於工廠設計模式?
- 14. 有沒有處理串口通信的設計模式?
- 15. 有沒有可以處理方法調用依賴性的設計模式?
- 16. DAO設計模式和連接處理
- 17. 設計模式:異常/錯誤處理
- 18. 狀態設計模式:錯誤處理
- 19. Java - 消息處理器設計模式
- 20. 設計模式 - 事件處理
- 21. 實現迭代回退機制的設計模式
- 22. 是否有理由報告我SDL的音頻回調時機是否遵循這種奇怪的模式?
- 23. 不同模式的命令處理器的設計模式
- 24. SQL模式設計模式是否有任何開源資源?
- 25. 鎖定事件處理的最有效的設計模式
- 26. nodejs並行回調設計模式
- 27. Observer模式的常見錯誤處理機制是什麼?
- 28. 處理同步變量的最佳設計模式是什麼?
- 29. 處理命令行參數的設計模式是什麼
- 30. 「讀取,處理,保存」模式的設計模式?
觀察者模式類似於發佈 - 訂閱模式,而不是回調。有一次,觀察者模塊在調用Observable模塊後沒有被「回調」。 Observable呼籲觀察者通知他們狀態的變化。 – 2016-01-22 21:01:17