本文實(shí)例講述了php設(shè)計(jì)模式之觀察者模式定義與用法。分享給大家供大家參考,具體如下:
?php
/**
* @desc 利用觀察者模式,實(shí)現(xiàn)不同用戶(hù)進(jìn)入顯示不同的內(nèi)容
* 1.主題
* 2.觀察者接口
* 3.觀察者
* ***/
interface Observer{
//添加觀察者對(duì)象
public function attach($observer);
//刪除觀察者對(duì)象
public function detach($observer);
//執(zhí)行觀察者需要執(zhí)行的方法
public function doIt();
}
class User implements Observer{
public $obj = [];
/*
*@desc 傳遞的對(duì)象不在存儲(chǔ)的obj對(duì)象中則將對(duì)象存儲(chǔ)到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 獲取所有被觀察者的對(duì)象,執(zhí)行觀察
* **/
public function doIt(){
if(!empty($this->obj)){
foreach ($this->obj as $v){
$v->active();
}
}
}
}
/**
* @desc 觀察者接口
* **/
interface obsUser{
public function active();
}
/*
* @實(shí)現(xiàn)零售店用戶(hù)實(shí)現(xiàn)方法類(lèi)
* **/
class storeUser implements obsUser{
public function active(){
echo "我是零售店用戶(hù)\n";
}
}
/**
* @desc 實(shí)現(xiàn)經(jīng)銷(xiāo)商用戶(hù)方法類(lèi)
* **/
class supplierUser implements obsUser{
public function active(){
echo "我是經(jīng)銷(xiāo)商用戶(hù)\n";
}
}
/*
* 實(shí)例化觀察者接口類(lèi)
* **/
$user = new User();
//添加門(mén)店用戶(hù)類(lèi)到觀察者對(duì)象
$user->attach(new storeUser());
//添加經(jīng)銷(xiāo)商用戶(hù)類(lèi)到觀察者對(duì)象
$user->attach(new supplierUser());
//監(jiān)控觀察者動(dòng)作并輸出結(jié)果
$user->doIt();
運(yùn)行結(jié)果:
我是零售店用戶(hù)
我是經(jīng)銷(xiāo)商用戶(hù)
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語(yǔ)法入門(mén)教程》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門(mén)教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
您可能感興趣的文章:- php設(shè)計(jì)模式之觀察者模式實(shí)例詳解【星際爭(zhēng)霸游戲案例】
- PHP設(shè)計(jì)模式之觀察者模式入門(mén)與應(yīng)用案例詳解
- PHP中常用的三種設(shè)計(jì)模式詳解【單例模式、工廠(chǎng)模式、觀察者模式】
- PHP設(shè)計(jì)模式之觀察者模式定義與用法分析
- PHP設(shè)計(jì)模式(觀察者模式)