PHP設計模式系列(九) 觀察者模式

2021-07-31 09:12:37 字數 1460 閱讀 3707

觀察者模式(observer pattern):定義物件間的一種一對多依賴關係,使得每當乙個物件狀態發生改變時,其相關依賴物件皆得到通知並被自動更新。觀察者模式又叫做發布-訂閱(publish/subscribe)模式、模型-檢視(model/view)模式、源-***(source/listener)模式或從屬者(dependents)模式。

觀察者模式是一種物件行為型模式。

觀察者模式包含如下角色:

/** * 觀察者模式

*///subject: 目標

abstract

class

subject

public

function

detach

($observer)

}public

function

notify

() }

}//observer: 觀察者

abstract

class

observer

//concretesubject: 具體目標

class

concretesubject

extends

subject

public

function

__get

($name)

}//concreteobserver: 具體觀察者

class

concreteobserver

extends

observer

public

function

__set

($name, $value)

public

function

__get

($name)

public

function

update

()

}$a=new concretesubject();

$a->attach(new concreteobserver($a,'x'));

$a->attach(new concreteobserver($a,'y'));

$a->attach(new concreteobserver($a,'z'));

$a->subjectstate='abc';

$a->notify();

string

'觀察者x的新狀態是abc' (length=28)

string

'觀察者y的新狀態是abc' (length=28)

string

'觀察者z的新狀態是abc' (length=28)

php設計模式系列 觀察者模式

觀察者模式 observer pattern 定義物件間的一種一對多 或一對一 的依賴關係,當被觀察者狀態發生改變時,註冊的觀察者都會被通知。觀察者模式又稱 發布 訂閱 publish subscribe 模式 模型 檢視 model view 模式 源 source listener 模式或從屬者...

設計模式九 觀察者模式

定義物件間一種一對多的依賴關係,使得每當乙個物件改變狀態,則所有依賴於它的物件都會得到通知並被自動更新。發布者 訂閱者模式。事件監聽 swing中都有用到。時間核心類 事件 author zzf date 2018 9 2 15 30.public class event public long g...

設計模式九 觀察者模式

定義物件間一種一對多的依賴關係,使得每當乙個物件改變狀態,則所有依賴於它的物件都會得到通知並被自動更新。發布者 訂閱者模式。事件監聽 swing中都有用到。時間核心類 事件 author zzf date 2018 9 2 15 30.public class event public long g...