全國(guó)咨詢(xún)/投訴熱線:400-618-4000

首頁(yè)技術(shù)文章正文

Java-觀察者模式

更新時(shí)間:2019-01-10 來(lái)源:黑馬程序員 瀏覽量:

  觀察者模式(有時(shí)又被稱(chēng)為模型(Model)-視圖(View)模式、源-收聽(tīng)者(Listener)模式或從屬者模式)是軟件設(shè)計(jì)模式的一種。在此種模式中,一個(gè)目標(biāo)物件管理所有相依于它的觀察者物件,并且在它本身的狀態(tài)改變時(shí)主動(dòng)發(fā)出通知。這通常透過(guò)呼叫各觀察者所提供的方法來(lái)實(shí)現(xiàn)。此種模式通常被用來(lái)實(shí)現(xiàn)事件處理系統(tǒng)。

  1. 觀察者模式 :分為兩種類(lèi)型,一種為推模式,一種為拉模式。

  2. 這兩種模式的區(qū)別為:推模式觀察者獲取到的數(shù)據(jù)為部分?jǐn)?shù)據(jù)即在目標(biāo)對(duì)象中定義的數(shù)據(jù)

  3. 拉模式下 可以獲得到最大的數(shù)據(jù)集。

  觀察者模式 可以說(shuō)是 發(fā)布訂閱模式 即一個(gè)目標(biāo)對(duì)象對(duì)應(yīng)多個(gè)觀察者。當(dāng)目標(biāo)對(duì)象發(fā)生改變后對(duì)應(yīng)的觀察者也要做出改變。

  目標(biāo)對(duì)象 提供對(duì)觀察者的管理

  · 抽象被觀察者角色:也就是一個(gè)抽象主題,它把所有對(duì)觀察者對(duì)象的引用保存在一個(gè)集合中,每個(gè)主題都可以有任意數(shù)量的觀察者。抽象主題提供一個(gè)接口,可以增加和刪除觀察者角色。一般用一個(gè)抽象類(lèi)和接口來(lái)實(shí)現(xiàn)。

  · 抽象觀察者角色:為所有的具體觀察者定義一個(gè)接口,在得到主題通知時(shí)更新自己。

  · 具體被觀察者角色:也就是一個(gè)具體的主題,在集體主題的內(nèi)部狀態(tài)改變時(shí),所有登記過(guò)的觀察者發(fā)出通知。

  · 具體觀察者角色:實(shí)現(xiàn)抽象觀察者角色所需要的更新接口,一邊使本身的狀態(tài)與制圖的狀態(tài)相協(xié)調(diào)

  觀察者模式可以進(jìn)行變換,做到有條件的通知。

  改觀察者接口 提供 參數(shù) 用來(lái)進(jìn)行判斷是否滿足條件 用于推送



作者:黑馬程序員JavaEE培訓(xùn)學(xué)院
首發(fā):http://java.itheima.com/

分享到:
在線咨詢(xún) 我要報(bào)名
和我們?cè)诰€交談!