觀察者模式是我們最常用的設(shè)計(jì)模式之一笋敞。它定義對(duì)象間的一種一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí)荠瘪,所有依賴于它的對(duì)象都將得到通知和更新夯巷。觀察者模式提供了一個(gè)訂閱模型趁餐,其中對(duì)象訂閱事件并在發(fā)生時(shí)得到通知后雷,這種模式是事件驅(qū)動(dòng)的編程基石臀突,它有利益于良好的面向?qū)ο蟮脑O(shè)計(jì)候学。
觀察者的應(yīng)用
1.DOM事件
實(shí)際上盒齿,只要我們?cè)?jīng)在DOM節(jié)點(diǎn)上面綁定過(guò)事件函數(shù)念逞,那我們就使用過(guò)觀察者模式边翁,應(yīng)為JS和DOM之間就是實(shí)現(xiàn)了一種觀察者模式叨咖。
document.body.addEventListener("click", function() {
console.log("Hello World")
}甸各,false )
document.body.click() //模擬用戶點(diǎn)擊
在上面的代碼中,需要監(jiān)聽(tīng)用戶點(diǎn)擊 document.body 的動(dòng)作儒恋,但是我們是沒(méi)辦法預(yù)知用戶將在什么時(shí)候點(diǎn)擊的。因此我們訂閱了 document.body 的 click 事件黔漂,當(dāng) body 節(jié)點(diǎn)被點(diǎn)擊時(shí),body 節(jié)點(diǎn)便會(huì)向訂閱者發(fā)布 "Hello World" 消息。