本文實例講述了php設計模式之觀察者模式定義與用法。分享給大家供大家參考,具體如下:
?php /** * @desc 利用觀察者模式,實現(xiàn)不同用戶進入顯示不同的內容 * 1.主題 * 2.觀察者接口 * 3.觀察者 * ***/ interface Observer{ //添加觀察者對象 public function attach($observer); //刪除觀察者對象 public function detach($observer); //執(zhí)行觀察者需要執(zhí)行的方法 public function doIt(); } class User implements Observer{ public $obj = []; /* *@desc 傳遞的對象不在存儲的obj對象中則將對象存儲到obj中 */ public function attach($observer){ if(!in_array($observer,$this->obj)){ $this->obj[] = $observer; } } /** * @desc 取消觀察者觀察 * **/ public function detach($observer){ $key = array_search($observer, $this->obj); if($key){ unset($this->obj[$key]); } } /*** * @desc 獲取所有被觀察者的對象,執(zhí)行觀察 * **/ public function doIt(){ if(!empty($this->obj)){ foreach ($this->obj as $v){ $v->active(); } } } } /** * @desc 觀察者接口 * **/ interface obsUser{ public function active(); } /* * @實現(xiàn)零售店用戶實現(xiàn)方法類 * **/ class storeUser implements obsUser{ public function active(){ echo "我是零售店用戶\n"; } } /** * @desc 實現(xiàn)經(jīng)銷商用戶方法類 * **/ class supplierUser implements obsUser{ public function active(){ echo "我是經(jīng)銷商用戶\n"; } } /* * 實例化觀察者接口類 * **/ $user = new User(); //添加門店用戶類到觀察者對象 $user->attach(new storeUser()); //添加經(jīng)銷商用戶類到觀察者對象 $user->attach(new supplierUser()); //監(jiān)控觀察者動作并輸出結果 $user->doIt();
運行結果:
我是零售店用戶
我是經(jīng)銷商用戶
更多關于PHP相關內容感興趣的讀者可查看本站專題:《php面向對象程序設計入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結》、《php字符串(string)用法總結》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家PHP程序設計有所幫助。