觀察者模式(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...