更新時間:2019-01-10 來源:黑馬程序員 瀏覽量:
觀察者模式(有時又被稱為模型(Model)-視圖(View)模式、源-收聽者(Listener)模式或從屬者模式)是軟件設(shè)計(jì)模式的一種。在此種模式中,一個目標(biāo)物件管理所有相依于它的觀察者物件,并且在它本身的狀態(tài)改變時主動發(fā)出通知。這通常透過呼叫各觀察者所提供的方法來實(shí)現(xiàn)。此種模式通常被用來實(shí)現(xiàn)事件處理系統(tǒng)。
1. 觀察者模式 :分為兩種類型,一種為推模式,一種為拉模式。
2. 這兩種模式的區(qū)別為:推模式觀察者獲取到的數(shù)據(jù)為部分?jǐn)?shù)據(jù)即在目標(biāo)對象中定義的數(shù)據(jù)
3. 拉模式下 可以獲得到最大的數(shù)據(jù)集。
觀察者模式 可以說是 發(fā)布訂閱模式 即一個目標(biāo)對象對應(yīng)多個觀察者。當(dāng)目標(biāo)對象發(fā)生改變后對應(yīng)的觀察者也要做出改變。
目標(biāo)對象 提供對觀察者的管理
· 抽象被觀察者角色:也就是一個抽象主題,它把所有對觀察者對象的引用保存在一個集合中,每個主題都可以有任意數(shù)量的觀察者。抽象主題提供一個接口,可以增加和刪除觀察者角色。一般用一個抽象類和接口來實(shí)現(xiàn)。
· 抽象觀察者角色:為所有的具體觀察者定義一個接口,在得到主題通知時更新自己。
· 具體被觀察者角色:也就是一個具體的主題,在集體主題的內(nèi)部狀態(tài)改變時,所有登記過的觀察者發(fā)出通知。
· 具體觀察者角色:實(shí)現(xiàn)抽象觀察者角色所需要的更新接口,一邊使本身的狀態(tài)與制圖的狀態(tài)相協(xié)調(diào)
觀察者模式可以進(jìn)行變換,做到有條件的通知。
改觀察者接口 提供 參數(shù) 用來進(jìn)行判斷是否滿足條件 用于推送
【AI設(shè)計(jì)】北京143期畢業(yè)僅36天,全員拿下高薪offer!黑馬AI設(shè)計(jì)連續(xù)6期100%高薪就業(yè)
2025-09-19【跨境電商運(yùn)營】深圳跨境電商運(yùn)營畢業(yè)22個工作日,就業(yè)率91%+,最高薪資達(dá)13500元
2025-09-19【AI運(yùn)維】鄭州運(yùn)維1期就業(yè)班,畢業(yè)14個工作日,班級93%同學(xué)已拿到Offer, 一線均薪資 1W+
2025-09-19【AI鴻蒙開發(fā)】上海校區(qū)AI鴻蒙開發(fā)4期5期,距離畢業(yè)21天,就業(yè)率91%,平均薪資14046元
2025-09-19【AI大模型開發(fā)-Python】畢業(yè)33個工作日,就業(yè)率已達(dá)到94.55%,班均薪資20763元
2025-09-19【AI智能應(yīng)用開發(fā)-Java】畢業(yè)5個工作日就業(yè)率98.18%,最高薪資 17.5k*13薪,全班平均薪資9244元
2025-09-19