Java 設計模式(一)觀察者模式

2021-08-15 09:53:20 字數 1352 閱讀 3366

一、簡介:

觀察者模式需要乙個主題及多個觀察者,當主題發生變化時,將變化的資料傳送給每乙個訂閱了主題的觀察者,由觀察者處理資料。當主題與觀察者發生變化時互不影響,可自行新增觀察者,也可以為觀察者自由更換註冊的主題。

二、**示例

定義觀察者及主題的介面:

//主題介面

inte***ce

isubject

//觀察者介面

inte***ce

iobserver

具體主題類:

public

class

subjectimpl

implements

subject

//資料處理完畢後資料改變狀態置為false

this.ischange = false;}}

//設定資料(此處為簡單實現,使用時請定義資料介面),每次設定,資料改變狀態被置為true

public

void

setmsg(string msg)

@override

public

void

addobserver(observer observer)

@override

public

void

removeobserver(observer observer)

}}

具體觀察者類(僅實現乙個作為案例,需要多個觀察者自行實現):

public

class

observerimpl

implements

observer

//資料處理

@override

public

void

handle(string msg)

//顯示資料

private

void

display(string msg)

//更換訂閱主題

public

void

setsubject(subject subject)

}

場景模擬:

public

class observertest

}

利用觀察者模式當需要新增新的資料處理方式,只需要簡單實現觀察者介面,僅更改場景類或修改配置檔案(主題類同理),達到對擴充套件開放,對修改關閉。

java設計模式 觀察者模式

本例以貓和老鼠來講解觀察者,首先定義觀察者為 老鼠和主人,被觀察者為貓,如下 public inte ce observer public class event public string getname public class mouse implements observer public ...

Java設計模式 觀察者模式

在物件之間定義一對多的依賴關係,這樣一來,當乙個物件改變狀態,依賴它的物件都會收到通知,並自動更新。比如有乙個天氣的資料來源,和需要獲取天氣資料的觀察者。天氣資料不定時更新。而觀察者也是隨時訂閱和取消訂閱天氣資料來源。在訂閱時,希望每次天氣資料更新時觀察者都可以獲取資訊。天氣資料來源作為被觀察的主題...

Java設計模式 觀察者模式

觀察者模式是乙個使用率非常高的的模式,它是一套訂閱 發布系統,這個模式最重要的作用就是將訂閱者和被訂閱者解耦。定義物件間一種對多種的依賴關係,使得每當乙個物件改變狀態,則所有依賴於它的物件都會得到通知。subject 抽象主題類,也就是被觀察者 observable 把所有觀察者物件儲存在乙個集合裡...