好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁(yè) > 知識(shí)庫(kù) > PHP設(shè)計(jì)模式(觀察者模式)

PHP設(shè)計(jì)模式(觀察者模式)

熱門(mén)標(biāo)簽:上海400客服電話(huà)怎么申請(qǐng) 銀行信貸電話(huà)機(jī)器人 天津電銷(xiāo)外呼系統(tǒng)違法嗎 滄州電銷(xiāo)外呼系統(tǒng)價(jià)格 400電話(huà)個(gè)人能不能辦理 合肥ai電銷(xiāo)機(jī)器人費(fèi)用 手機(jī)外呼系統(tǒng)什么原理 溫州外呼系統(tǒng)招商 凱立德地鐵站地圖標(biāo)注

PHP 設(shè)計(jì)模式之觀察者模式

介紹

現(xiàn)在有兩派,有的人建議使用設(shè)計(jì)模式,有的人不建議使用設(shè)計(jì)模式! 這就向?qū)懳恼乱粯樱械娜讼矚g文章按照套路走,比如敘事性質(zhì)的文章,時(shí)間,地點(diǎn),人物,事件。而有的人喜歡寫(xiě)雜文或者散文,有的人喜歡寫(xiě)詩(shī)詞! 現(xiàn)在寫(xiě)代碼很多地方類(lèi)似于寫(xiě)文章,但是在有些地方比寫(xiě)文章需要更多的技能!寫(xiě)文章寫(xiě)多了一般也能寫(xiě)出優(yōu)秀的文章,而代碼也一樣,寫(xiě)多了也能寫(xiě)出很多有些的代碼! 很多時(shí)候,我看設(shè)計(jì)模式的時(shí)候,有些設(shè)計(jì)模式只是吻合我的代碼習(xí)慣。但是你硬去套它,那么反而適得其反。——很多時(shí)候是學(xué)會(huì)了招式,在應(yīng)用中不知不覺(jué)的使用上這些招式,才能掌握其道,但是也不要拘泥于招式,正所謂“無(wú)招勝有招”嗎? 我學(xué)設(shè)計(jì)模式的初衷,就是知道有這么個(gè)玩意兒?腦子里有這么個(gè)印象,也不會(huì)生套它!如果設(shè)計(jì)模式不符合你的習(xí)慣對(duì)你閱讀代碼反而是不利的! 觀察者模式定義對(duì)象的一對(duì)多依賴(lài),這樣一來(lái),當(dāng)一個(gè)對(duì)象改變狀態(tài)時(shí),它的所有依賴(lài)者都會(huì)收到通知并自動(dòng)更新!

設(shè)計(jì)原則

在觀察者模式中,會(huì)改變的是主題的狀態(tài)以及觀察者的數(shù)目。用這個(gè)模式,你可以改變依賴(lài)于主題狀態(tài)的對(duì)象,卻不必改變主題。——找出程序中會(huì)變化的方面,然后將其和固定不變的方面相分離! 主題和觀察者都使用接口:觀察者利用主題的接口向主題注冊(cè),而主題利用觀察者接口通知觀察者。這樣可以讓兩者之間運(yùn)作正常,又同時(shí)具有松耦合的優(yōu)點(diǎn)! ——針對(duì)接口編程,不針對(duì)實(shí)現(xiàn)編程! 觀察者模式利用“組合”將許多觀察者組合進(jìn)主題中。對(duì)象(觀察者——主題)之間的這種關(guān)系不是通過(guò)繼承產(chǎn)生的,而是在運(yùn)行時(shí)利用組合的方式產(chǎn)生的。 ——多用組合,少用繼承!

代碼

?php
/**
 * 觀察者模式
 * @author: Mac
 * @date: 2012/02/22
 */ 
class Paper{ /* 主題    */
    private $_observers = array();
 
    public function register($sub){ /*  注冊(cè)觀察者 */
        $this->_observers[] = $sub;
    }
    public function trigger(){  /*  外部統(tǒng)一訪問(wèn)    */
        if(!empty($this->_observers)){
            foreach($this->_observers as $observer){
                $observer->update();
            }
        }
    }
} 
/**
 * 觀察者要實(shí)現(xiàn)的接口
 */
interface Observerable{
    public function update();
} 
class Subscriber implements Observerable{
    public function update(){
        echo "Callback\n";
    }
}

下面是測(cè)試代碼

/*  測(cè)試    */
$paper = new Paper();
$paper->register(new Subscriber());
//$paper->register(new Subscriber1());
//$paper->register(new Subscriber2());
$paper->trigger();

總結(jié)

當(dāng)新對(duì)象要填入的時(shí)候,只需要在主題(又叫可觀察者)中進(jìn)行注冊(cè)(注冊(cè)方式很多,你也可以在構(gòu)造的時(shí)候,或者框架訪問(wèn)的接口中進(jìn)行注冊(cè)),然后實(shí)現(xiàn)代碼直接在新對(duì)象的接口中進(jìn)行。這降低了主題對(duì)象和觀察者對(duì)象的耦合度。 好的設(shè)計(jì)模式不會(huì)直接進(jìn)入你的代碼中,而是進(jìn)入你的大腦中。

到此這篇關(guān)于PHP設(shè)計(jì)模式(觀察者模式)的文章就介紹到這了,更多相關(guān)PHP 觀察者模式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 淺談PHP設(shè)計(jì)模式之門(mén)面模式Facade
  • 淺談PHP設(shè)計(jì)模式之對(duì)象池模式Pool
  • 詳解PHP設(shè)計(jì)模式之依賴(lài)注入模式
  • PHP設(shè)計(jì)模式之迭代器模式的使用
  • 詳解PHP八大設(shè)計(jì)模式
  • PHP設(shè)計(jì)模式之原型模式示例詳解
  • PHP設(shè)計(jì)模式之命令模式示例詳解
  • PHP八大設(shè)計(jì)模式案例詳解

標(biāo)簽:溫州 七臺(tái)河 怒江 酒泉 金華 白城 赤峰 洛陽(yáng)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP設(shè)計(jì)模式(觀察者模式)》,本文關(guān)鍵詞  PHP,設(shè)計(jì)模式,觀察者,模式,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP設(shè)計(jì)模式(觀察者模式)》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于PHP設(shè)計(jì)模式(觀察者模式)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章