實施步驟:
1.實現壹個監聽器Oberver來劫持和監視所有屬性,並在屬性更改時通知訂閱者。
2.實現訂閱者觀察器來接收屬性更改的通知並執行相應的方法,從而更新視圖。
3.實現壹個解析器編譯,它可以掃描和解析每個節點的相關指令,並根據初始化模板數據初始化相應的訂戶。
觀察者模式確實很有用,但在javascript實踐中,我們通常使用壹種稱為發布/訂閱模式的變體來實現觀察者模式。
從圖中可以看出,這兩種模式非常相似,但也有壹些值得註意的差異。
發布/訂閱模式使用主題/事件通道,該通道位於希望獲得通知的訂閱者和發起事件的發布者之間。該事件系統允許代碼定義與應用程序相關的事件,這些事件可以傳遞特殊參數,包括訂閱者所需的值。
觀察者模式和發布-訂閱模式的區別:
觀察者模式要求希望接收相關通知的觀察者必須向發起該事件的被觀察者註冊該事件。
發布/訂閱模式使用主題/事件通道(類似於中介/中間人),這可以減少訂閱者和發布者之間的依賴。
在發布/訂閱模式下,訂閱者可以實現適當的事件處理功能來註冊和接收發布者廣播的相關通知。