在最初查閱資料時忙上,以為觀察者模式和發(fā)布訂閱模式是同一個東西景醇,只是稱呼不同,后來一個機(jī)緣巧合下崭闲,想要深入了解發(fā)布訂閱的實(shí)現(xiàn)原理肋联,然后才發(fā)現(xiàn)這兩個是有差異的。
以下內(nèi)容都引用自這位博主的博文刁俭,博文地址牺蹄。比較詳細(xì)的闡述了兩者的區(qū)別,我目前很贊同薄翅。
觀察者模式雖然實(shí)現(xiàn)了對象間依賴關(guān)系的低耦合,但卻不能對事件通知進(jìn)行細(xì)分管控氓奈,如 “篩選通知”翘魄,“指定主題事件通知” 。
比如上面的例子舀奶,僅通知 “前端開發(fā)者” 暑竟?觀察者對象如何只接收自己需要的更新通知?上例中育勺,兩個觀察者接收目標(biāo)者狀態(tài)變更通知后但荤,都執(zhí)行了 update(),并無區(qū)分涧至。
“00后都在追求個性的時代腹躁,我能不能有點(diǎn)不一樣?”南蓬,這就引出我們的下一個模式纺非。進(jìn)階版的觀察者模式∽阜剑“發(fā)布訂閱模式”烧颖,部分文章對兩者是否一樣都存在爭議。
僅代表個人觀點(diǎn):兩種模式很類似窄陡,但是還是略有不同炕淮,就是多了個第三者,因 JavaScript 非正規(guī)面向?qū)ο笳Z言跳夭,且函數(shù)回調(diào)編程的特點(diǎn)涂圆,使得 “發(fā)布訂閱模式” 在 JavaScript 中代碼實(shí)現(xiàn)可等同為 “觀察模式”们镜。
作者:以樂之名 鏈接:http://www.reibang.com/p/3e3451708143 來源:簡書 著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)乘综,非商業(yè)轉(zhuǎn)載請注明出處憎账。