首頁  >  文章  >  後端開發  >  觀察者 php中的觀察者模式

觀察者 php中的觀察者模式

WBOY
WBOY原創
2016-07-29 08:42:21901瀏覽

觀察者模式

複製程式碼 程式碼如下:


interface Subject {
public function Atted(Oface function Attedserver ); //新增觀察者
public function Detach($Observer); //踢出觀察者
public function Notify(); //滿足條件時通知觀察者
public function SubjectState($Subject ); //觀察條件
}
class Boss Implements Subject
{
public $_action;
private $_Observer;
public function Attach($Observer)
{
public function Attach($Observer)
{
{
{
{
{
{
{
{
{
{
{
{
{
{
$this->_Observer[] = $Observer;
}
public function Detach($Observer)
{
$ObserverKey = array_search($Observer, $this->🎜>$ObserverKey = array_search($Observer, $this->_Observer); 🎜>if($ObserverKey !== false)
{
unset($this->_Observer[$ObserverKey]);
}
}
public function Notify()
{
foreach($this->_Observer as $value )
{
$value->Update();
}
}
public function SubjectState($Subject)
{
$this->_action = $Subject;
}
}
abstract class Observer
{
protected $_UserName;
protected $_Sub;
public {
$this->_UserName = $Name;
$this->_Sub = $Sub;
}
public abstract function Update() ; //接收通過方法
}
class StockObserver extends Observer
{
public function __construct($name,$sub)
{
parent::__construct($name,$ sub);
}

public function Update()
{
echo $this->_Sub->_action.$this->_UserName." 你趕快跑...";
}
}
$huhansan = new Boss(); //被觀察者
$gongshil = new StockObserver("三毛",$huhansan); //初始化觀察者

$huhansan- >Attach($gongshil); //增加一個觀察者

$huhansan->Attach($gongshil); //增加一個相同的觀察者

$huhansan->Detach($gongshil); //踢出基中一個觀察者

$huhansan->SubjectState("警察來了"); //達到滿足的條件$huhansan->Notify(); //透過所有有效的觀察者 可以粗略的理解為,一個類別(我們稱之為被觀察者),這個類別繼承了一個被觀察者容器的藉口該介面中的方法有:添加觀察者,踢出觀察者,提醒觀察者,和觀察條件添加觀察者即相當於把一些類註冊到這個容器之中,當然這些類的前提是需要有一個相應被觀察者反應信息的方法, 被觀察者容器透過接受不同的觀察條件參數來判斷是否需要提醒所有本容器中的已經註冊過的觀察者是否相應一旦滿足提醒條件,提醒容器內所有觀察者讓其調用相應方法並且實現對應觀察者實例的變化暫且理解到此! 以上就介紹了觀察者 php中的觀察者模式,包括了觀察者方面的內容,希望對PHP教程有興趣的朋友有所幫助。
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn