我一直在各種上下文中使用Dojo,從來沒有找到關於事件與主題的很好的解釋。我使用這兩種機制的理解如下:Dojo:主題vs事件,應考慮哪些設計考慮因素?
- 兩者都是事件或更一般的消息機制。
- 兩者的工作方式差不多,因爲您通過設置回調來訂閱主題/事件。
- 事件與對象/小部件緊密耦合,因爲您需要實際的對象或小部件實例來註冊特定事件的偵聽器。
- 另一方面,主題機制提供了更加分離的方法,因爲您可以在不知道哪個組件正在發佈主題的情況下訂閱任何主題,甚至不知道該主題是否會發布。
在使用Dojo開發定製窗口小部件時,我曾經多次使用這種方法,讓它們發佈到某些主題。其他組件會訂閱這些主題並做出適當的反應。但是,這導致很難遵循的代碼,因爲當你找到一個訂閱特定主題的代碼時,你開始想知道誰正在發佈到該主題,反之亦然。目前,我傾向於讓自定義小部件提交事件並讓控制器監聽這些事件並將它們分派給其他應對這些事件作出反應的小部件。
所以在第一種方法中,主題機制是小部件之間的粘合劑,但它是分散的,這使得難以在我的經驗中維護代碼的長期。在第二種方法中,控制器類(遵循MVC模式)是膠水,它集中了事件處理。
我很想知道這是否是對這兩種機制的正確理解。在選擇其中一種(或混合它們)時,我應該考慮任何設計考慮因素。任何關於該主題的精心討論的指針都會受到讚賞。我一直在尋找:http://dojotoolkit.org/documentation/tutorials/1.9/events/,但主要描述了這兩種機制如何工作,但對如何構建複雜應用程序沒有深入瞭解。
嗨Johannes,歡迎來到Stack Overflow。關於你的答案的一點建議:當這個鏈接可以回答這個問題時,最好在這裏包含答案的基本部分,並提供參考鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。有關更多詳情,請參閱[答案]。 –