認知 設計模式之觀察者模式

2021-10-03 06:35:34 字數 2148 閱讀 1716

觀察者模式(有時被稱為模型(model)- 檢視(view)模式、源-收聽者(listener)模式)或從屬者模式)是軟體設計模式的一種。在此種模式中,乙個目標物件管理所有相依於它的觀察者物件,並且在它本身的狀態改變時主動發出通知,這通常通過呼叫各觀察者所提供的方法來實現。此種模式通常被用來實現事件處理系統

觀察者模式是一種物件行為模式。它定於物件間一種一對多的依賴關係,當乙個物件的狀態發改變時,所有依賴於它的物件都得到通知並被自動更新,在觀察者模式中,主題是通知的發布者,它發出通知時並不需要知道誰是它的觀察者,可以有任意數目的觀察者訂閱並接收通知。觀察者模式不僅被廣泛應用於軟體介面元素之間的互動,在業務物件之間的互動,許可權管理等方面也有廣泛應用。

觀察者模式定義了物件間的一種一對多的組合關係,以便乙個物件的狀態發生變化是,所有依賴於它的物件得到通知並自動重新整理。

1、主題-訊息發布者:

1)定義主題介面

public

inte***ce

isubject

這裡以氣象資料為主題實現類

public

class

weathdata

implements

isubject

public

weathdata()

public

void

datachange()

//模擬資料變化

public

void

changeweathdata

(float humidity,

float temperature,

float pressure)

}private

void

setchange()

public

float

gethumidity()

public

void

sethumidity

(float humidity)

public

float

gettemperature()

public

void

settemperature

(float temperature)

public

float

getpressure()

public

void

setpressure

(float pressure)

@override

public

void

registerobserver

(iobserver obs)

observers.

add(obs);}

@override

public

void

removeobserver

(iobserver obs)

}//推送訊息模式

@override

public

void

publishmessage

(object obj)

change =

false;}

}//抽取訊息模式,觀察者通過主題物件get方法選擇性讀取訊息

public

void

publishmessage()

}

2)觀察者

定義觀察者介面:

public

inte***ce

iobserver

觀察者實現類:

public

class

observer

implements

iobserver

@override

public

void

dealmessage

(isubject publisher, object obj)

}private

void

display()

}

3)演示:

public

class

demo

}

設計模式之觀察者模式

首先說了乙個自己的小例子吧,前兩天我的乙個朋友來找我玩,因為路途比較遠,我需要知道他的位置,然後安排好時間去接他,那麼在這個例子中,我就是乙個觀察者,需要時時刻刻觀察他的位置,我的朋友就是乙個被觀察者。那麼需要知道我朋友的位置,就有兩種方式,第一,我自己打 問,第二,我的朋友告訴我,下面我們來看看這...

設計模式之觀察者模式

一 作用 讓多個觀察者監視某一物件的變化,如果物件變化,則通知所有觀察者。二 例子 抽象主題類 public abstract class subject 移除觀察者 public void detach observer observer 向觀察者 們 發出通知 public void notif...

設計模式之觀察者模式

觀察者模式的定義是 定義物件間的一種一對多的依賴關係。當乙個物件的狀態發生變化時,所有依賴它的物件都會得到通知並自動更新 報社跟讀者的例子 我們用報社和讀者之間的關係來模擬觀察者模式。包含以下主體 報社 news office 讀者介面 reader 具體讀者 reader 二逼青年 reader ...