PHP5+標準函數庫觀察者之實現
PHP的觀察者設計模式實現相對簡單,但是PHP5+版本中已經有標準庫類庫支援,我們只需簡單繼承並實現就可以了。
觀察者:實現標準介面類庫SplSubject。一個註冊方法:attach,一個取消註冊方法:detach。一個通知方法:nofity。
observers =array(); } public function attach(SplObserver $observer){$this->observers[] = $observer; } public function detach(SplObserver $observer){if($idx = array_search($observer, $this->observers,true)) {unset($this->observers[$idx]);} } /** * * Notify observers one by one (main entry) * * @param none * @return none */ public function notify(){foreach($this->observers as $observer){$observer->update($this);} } public function setValue($value){$this->value = $value;//$this->notify(); } public function getValue(){ return $this->value; }}
被觀察者:實現標準介面類庫SplObserver。一個update方法。
getValue(); }}
getValue(); }}
測試調用(同目錄下):
attach(new TSPLObserver());$observer1 = new TSPLObserver1();$subject->attach($observer1);//$subject->attach(new TSPLObserver2());//$subject->detach($observer1);$subject->notify();exit();
輸出:
>php basic.php
The new state of subject
The new state of subject one
http://www.bkjia.com/PHPjc/875469.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/875469.htmlTechArticlePHP5+標準函數庫觀察者之實現 PHP的觀察者設計模式實現相對簡單,但是PHP5版本中已經有標準庫類庫支援,我們只需簡單繼承並實現就可以了...