「觀察者模式和發(fā)布訂閱模式的區(qū)別?」
1、觀察者模式
觀察者模式定義對(duì)象間一種一對(duì)多的依賴關(guān)系燕耿,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都將得到通知姜胖,并自動(dòng)更新誉帅。
一個(gè)或多個(gè)觀察者對(duì)目標(biāo)的狀態(tài)感興趣,通過(guò)將自己依附在目標(biāo)對(duì)象上以便注冊(cè)所感興趣的內(nèi)容。目標(biāo)狀態(tài)發(fā)生改變并且觀察者可能對(duì)這些改變感興趣蚜锨,會(huì)發(fā)送一個(gè)通知消息档插,調(diào)用每個(gè)觀察者的更新方法。
讀起來(lái)好像有點(diǎn)兒晦澀難懂亚再。舉個(gè)例子:
你心中的女神郭膛,她的一舉一動(dòng),一笑一顰都牽動(dòng)著你的情緒氛悬。你將自己依附在了女神的身上饲鄙,當(dāng)女神開(kāi)心,你樂(lè)喲圆雁。當(dāng)女神傷心,你焦慮怎么去哄帆谍。
女神是被觀察者伪朽,你是觀察者。 你觀察的是女神的心情汛蝙,當(dāng)女神心情發(fā)生改變的時(shí)候烈涮,你也要做出相應(yīng)的事。還有既然是女神窖剑,追求者肯定不止一個(gè)坚洽,女神也可能是別人的女神。所以觀察女神的可能是多個(gè)西土。
2讶舰、發(fā)布訂閱模式
消息的發(fā)布者不會(huì)將消息直接發(fā)送給訂閱者,這就意味著發(fā)布者和訂閱者彼此不知道對(duì)方的存在需了。在發(fā)布者和訂閱者之間存在第三組件跳昼,稱為消息代理或者調(diào)度中心或者中間件,它維持著發(fā)布者和訂閱者之間的聯(lián)系肋乍,過(guò)濾所有發(fā)布者傳入的消息并相應(yīng)地分發(fā)它們給訂閱者鹅颊。
舉個(gè)例子:
最近潮鞋很熱門(mén),各種 AJ墓造、各種椰子等等堪伍,但是大家都知道鞋子很難搶的。我看上了一雙 AJ 黑紅腳趾觅闽,有一個(gè)買手大佬有各種渠道能幫我弄到手帝雇。當(dāng)某平臺(tái)或者個(gè)人搶到了這雙鞋會(huì)告訴買手,然后買手再通知到我谱煤。
這個(gè)例子是平臺(tái)或者個(gè)人是發(fā)布者摊求,買手是調(diào)度中心,而我是訂閱者。我并不知道買手在哪里弄到的 AJ 黑紅腳趾室叉,賣家也不了解這雙鞋最后被誰(shuí)買走了睹栖。