php設(shè)計(jì)模式之觀察者模式定義與用法經(jīng)典示例
本文實(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ì)有所幫助。
相關(guān)文章
PHP中針對(duì)區(qū)域語(yǔ)言標(biāo)記信息的操作
大家都知道Locale 類(lèi)就是操作區(qū)域語(yǔ)言相關(guān)內(nèi)容的,它無(wú)法被實(shí)例化,所有全部功能方法都是靜態(tài)的。接下來(lái)通過(guò)本文給大家分享PHP中針對(duì)區(qū)域語(yǔ)言標(biāo)記信息的操作,需要的朋友參考下吧2021-07-07
Laravel學(xué)習(xí)基礎(chǔ)之migrate的使用教程
這篇文章主要給大家介紹了關(guān)于Laravel學(xué)習(xí)基礎(chǔ)之migrate使用的相關(guān)資料,文中通過(guò)示例代碼介紹非常詳細(xì),分別介紹了生成遷移、遷移結(jié)構(gòu)、運(yùn)行遷移和回滾遷移等實(shí)現(xiàn)的方法,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-10-10
PHP中使用FFMPEG獲取視頻縮略圖和視頻總時(shí)長(zhǎng)實(shí)例
這篇文章主要介紹了PHP中使用FFMPEG獲取視頻縮略圖和視頻總時(shí)長(zhǎng)實(shí)例,需要的朋友可以參考下2014-05-05
ThinkPHP采用原生query實(shí)現(xiàn)關(guān)聯(lián)查詢(xún)left join實(shí)例
這篇文章主要介紹了ThinkPHP采用原生query實(shí)現(xiàn)關(guān)聯(lián)查詢(xún)left join的方法,實(shí)例展示了ThinkPHP中query方法的使用技巧,需要的朋友可以參考下2014-12-12
Zend Framework創(chuàng)建自己的動(dòng)作助手詳解
這篇文章主要介紹了Zend Framework創(chuàng)建自己的動(dòng)作助手實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了基于助手的抽象基類(lèi)Zend_Controller_Action_Helper_Abstract實(shí)現(xiàn)自定義動(dòng)作助手的相關(guān)技巧,需要的朋友可以參考下2016-03-03
Yii2-GridView 中讓關(guān)聯(lián)字段帶搜索和排序功能示例
這篇文章主要介紹了Yii2-GridView 中讓關(guān)聯(lián)字段帶搜索和排序功能示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-01-01

