它是一種事件系統,意味着某個類可以觀察另一個類的狀態,當被觀察的類的狀態發生改變時,觀察者可以收到通知並且做出相應的動作
優點:觀察者模式提供了避免組件之間緊密耦合的另一種方法
代碼:
<?php
//觀察者模式涉及到兩個類
//男人類 和 女朋友類
//男人類對象小明 ,小明非常花心,有兩個女朋友小花和小麗,給兩個女朋友都說如果我花錢就凍結銀行卡
class Man{
protected $observers = array();
function addobserver($observer)
{
$this->observers[] = $observer;
}
function buy()
{
foreach ($this->observers as $girlfirend)
{
$girlfirend->dongjie();
}
}
function delobserver($observer)
{
$key = array_search($observer,$this->observers);
array_splice($this->observers,$key,1);
}
}
class GirlFriend{
function dongjie()
{
echo "凍結小明的銀行卡\n";
}
}
$xiaohua = new GirlFriend();
$xiaoli = new GirlFriend();
$xiaoming = new Man();
$xiaoming->addobserver($xiaohua);
$xiaoming->addobserver($xiaoli);
//$xiaoming->delobserver($xiaoli);
$xiaoming->buy();