最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2021年07月07日 11:44:33   作者:川山甲  
這篇文章主要介紹了PHP設(shè)計模式(觀察者模式),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下

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

介紹

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

設(shè)計原則

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

代碼

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

下面是測試代碼

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

總結(jié)

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

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

相關(guān)文章

最新評論

商都县| 榆树市| 鱼台县| 濮阳县| 曲水县| 沐川县| 肇州县| 黑水县| 新宾| 罗甸县| 建湖县| 景洪市| 亳州市| 大冶市| 达州市| 蒙城县| 桦川县| 金溪县| 凯里市| 云阳县| 子洲县| 勐海县| 寿光市| 潼南县| 临颍县| 古交市| 咸阳市| 商洛市| 汉寿县| 应用必备| 麻阳| 郎溪县| 义马市| 云安县| 恩施市| 石河子市| 富蕴县| 定州市| 邳州市| 东兴市| 翁牛特旗|