php中的設計模式之--觀察者模式
observers[] = $observer ;
}
// 刪除觀察者 (看花的人)
public function detach(Observer $observer){
if(in_array($observer,$this->observers)){
$index = array_search($observer, $this->observers);
unset($this->observers[$index]);
return TRUE;
}
return false;
}
// 向觀察者(們)發出通知
public function notify(){
foreach($this->observers as $observer){
$observer->dosometing();
}
}
}
// 具體的人
class LoveFlowerPerson implements Observer{
private $name ;
function __construct($sName){
$this->name =$sName ;
}
public function dosometing(){
echo $this->name.'澆花 ';
}
}
/* 添加第一個觀察者花農 */
$subject = new Flower();
$observer1 = new LoveFlowerPerson('wlt');
$subject->attach($observer1);
/* 添加第二個觀察者花農 */
$observer2 = new LoveFlowerPerson('wlb');$subject->attach($observer2);$subject->notify(); // 主題變化,通知觀察者echo '刪除掉一個花農
'; $subject->detach($observer2);$subject->notify(); // 主題變化,通知觀察者