国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
php設(shè)計(jì)模式 觀察者模式,設(shè)計(jì)模式觀察者
首頁(yè) 後端開(kāi)發(fā) php教程 php設(shè)計(jì)模式 觀察者模式,設(shè)計(jì)模式觀察者_(dá)PHP教程

php設(shè)計(jì)模式 觀察者模式,設(shè)計(jì)模式觀察者_(dá)PHP教程

Jul 12, 2016 am 08:58 AM
設(shè)計(jì)模式

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

觀察者模式的核心是把客戶元素(觀察者)從一個(gè)中心類(主體)中分離開(kāi)來(lái)。當(dāng)主體知道事件發(fā)生時(shí),觀察者需要被通知到。同時(shí),我們并不希望將主體與觀察者之間的關(guān)系進(jìn)行硬編碼。為了達(dá)到這個(gè)目的,我們可以允許觀察者在主體上進(jìn)行注冊(cè)。

觀察者模式實(shí)現(xiàn)了低耦合、非侵入式的通知與更新機(jī)制。

場(chǎng)景:當(dāng)一個(gè)事件發(fā)生后,要執(zhí)行一連串更新操作。

<span>EventGenerator</span>.php
<?<span>php
namespace Baobab;
</span><span>/*</span><span>*
 * Class EventGenerator 基類,事件發(fā)生者
 </span><span>*/</span>
<span>abstract</span> <span>class</span><span> EventGenerator{

    </span><span>//</span><span>觀察者對(duì)于事件發(fā)生者是不可見(jiàn)的,事件發(fā)生者不關(guān)心有哪些觀察者關(guān)注了事件</span>
    <span>private</span> <span>$observers</span> = <span>array</span><span>();

    </span><span>/*</span><span>*
     * 添加觀察者
     </span><span>*/</span>
    <span>function</span> addObserver(Observer <span>$observer</span><span>){
        </span><span>$this</span>->observers[] = <span>$observer</span><span>;
    }

    </span><span>/*</span><span>*
     *逐個(gè)通知觀察者進(jìn)行更新的操作
     </span><span>*/</span>
    <span>function</span><span> notify(){
        </span><span>foreach</span>(<span>$this</span>->observers <span>as</span> <span>$observer</span><span>){
            </span><span>$observer</span>-><span>update();
        }
    }
}</span>
<span>Observer</span>.php
<?<span>php
namespace Baobab;
</span><span>/*</span><span>*
 * Class Observer 觀察者,觀察的對(duì)象是事件發(fā)生者
 * @package Baobab
 </span><span>*/</span>
<span>interface</span><span> Observer{
    </span><span>/*</span><span>*
     * @param null $event_info  事件的信息
     * 表示事件發(fā)生后進(jìn)行更新的操作
     </span><span>*/</span>
    <span>function</span> update(<span>$event_info</span> = <span>null</span><span>);
}</span>

index.php

<span>class</span> Event <span>extends</span><span> \Baobab\EventGenerator{
    </span><span>/*</span><span>*
     *觸發(fā)一個(gè)新的事件
     </span><span>*/</span>
    <span>function</span><span> trigger(){
        </span><span>echo</span> 'Event發(fā)生'<span>;
        </span><span>$this</span>-><span>notify();
    }
}

</span><span>/*</span><span>*
 * 觀察者1
 </span><span>*/</span>
<span>class</span> Observer1 <span>implements</span><span> \Baobab\Observer{
    </span><span>function</span> Update(<span>$event_info</span> = <span>null</span><span>){
        </span><span>echo</span> '更新操作代碼1'<span>;
    }
}<br />
<span>/*<span>* <br /> * 觀察者2 <br /><span> */</span></span></span>
</span><span>class</span> Observer2 <span>implements</span><span> \Baobab\Observer{
    </span><span>function</span> Update(<span>$event_info</span> = <span>null</span><span>){
        </span><span>echo</span> '更新操作代碼2'<span>;
    }
}

</span><span>$event</span> = <span>new</span><span> Event();
</span><span>$event</span>->addObserver(<span>new</span><span> Observer1());
</span><span>$event</span>->addObserver(<span>new</span><span> Observer2());
</span><span>$event</span>->trigger();

?

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1105142.htmlTechArticlephp設(shè)計(jì)模式 觀察者模式,設(shè)計(jì)模式觀察者 觀察者模式的核心是把客戶元素(觀察者)從一個(gè)中心類(主體)中分離開(kāi)來(lái)。當(dāng)主體知道事件...
本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

Java框架中設(shè)計(jì)模式與架構(gòu)模式的區(qū)別 Java框架中設(shè)計(jì)模式與架構(gòu)模式的區(qū)別 Jun 02, 2024 pm 12:59 PM

在Java框架中,設(shè)計(jì)模式和架構(gòu)模式的區(qū)別在於:設(shè)計(jì)模式定義了在軟體設(shè)計(jì)中解決常見(jiàn)問(wèn)題的抽象解決方案,專注於類別和物件之間的交互,例如工廠模式。架構(gòu)模式定義了系統(tǒng)結(jié)構(gòu)和模組之間的關(guān)係,關(guān)注系統(tǒng)元件的組織和交互,如分層架構(gòu)。

PHP設(shè)計(jì)模式:測(cè)試驅(qū)動(dòng)開(kāi)發(fā)實(shí)踐 PHP設(shè)計(jì)模式:測(cè)試驅(qū)動(dòng)開(kāi)發(fā)實(shí)踐 Jun 03, 2024 pm 02:14 PM

TDD用於編寫高品質(zhì)PHP程式碼,步驟包括:編寫測(cè)試案例,描述預(yù)期功能並使其失敗。編寫程式碼,僅使測(cè)試案例通過(guò),無(wú)需過(guò)度優(yōu)化或詳細(xì)設(shè)計(jì)。測(cè)試案例通過(guò)後,優(yōu)化和重構(gòu)程式碼以提高可讀性、可維護(hù)性和可擴(kuò)展性。

Guice框架中設(shè)計(jì)模式的應(yīng)用 Guice框架中設(shè)計(jì)模式的應(yīng)用 Jun 02, 2024 pm 10:49 PM

Guice框架應(yīng)用了多項(xiàng)設(shè)計(jì)模式,包括:?jiǎn)卫J剑和高^(guò)@Singleton註解確保類別只有一個(gè)實(shí)例。工廠方法模式:透過(guò)@Provides註解建立工廠方法,在依賴注入時(shí)取得物件實(shí)例。策略模式:將演算法封裝成不同策略類,透過(guò)@Named註解指定具體策略。

設(shè)計(jì)模式如何應(yīng)對(duì)程式碼維護(hù)難題 設(shè)計(jì)模式如何應(yīng)對(duì)程式碼維護(hù)難題 May 09, 2024 pm 12:45 PM

設(shè)計(jì)模式透過(guò)提供可重複使用和可擴(kuò)展的解決方案來(lái)解決程式碼維護(hù)難題:觀察者模式:允許物件訂閱事件,並在事件發(fā)生時(shí)收到通知。工廠模式:提供了一種創(chuàng)建物件的集中式方式,而無(wú)需依賴特定類別。單例模式:確保一個(gè)類別只有一個(gè)實(shí)例,用於建立全域可存取的物件。

Java設(shè)計(jì)模式之裝飾器模式剖析 Java設(shè)計(jì)模式之裝飾器模式剖析 May 09, 2024 pm 03:12 PM

裝飾器模式是一種結(jié)構(gòu)型設(shè)計(jì)模式,允許動(dòng)態(tài)添加物件功能,無(wú)需修改原始類別。它透過(guò)抽象組件、具體組件、抽象裝飾器和具體裝飾器的協(xié)作實(shí)現(xiàn),可以靈活擴(kuò)展類別功能,滿足變化的需求。範(fàn)例中,將牛奶和摩卡裝飾器添加到Espresso,總價(jià)為2.29美元,展示了裝飾器模式在動(dòng)態(tài)修改物件行為方面的強(qiáng)大功能。

Java設(shè)計(jì)模式之適配器模式的妙用 Java設(shè)計(jì)模式之適配器模式的妙用 May 09, 2024 pm 12:54 PM

適配器模式是一種結(jié)構(gòu)型設(shè)計(jì)模式,允許不相容物件協(xié)同工作,它將一個(gè)介面轉(zhuǎn)換為另一個(gè),使物件能夠順利互動(dòng)。物件適配器透過(guò)建立包含被適配器對(duì)象的適配器對(duì)象,並實(shí)現(xiàn)目標(biāo)接口,實(shí)現(xiàn)適配器模式。在一個(gè)實(shí)戰(zhàn)案例中,透過(guò)適配器模式,客戶端(如MediaPlayer)可以播放高級(jí)格式的媒體(如VLC),儘管本身僅支援普通媒體格式(如MP3)。

Spring MVC架構(gòu)中設(shè)計(jì)模式的應(yīng)用 Spring MVC架構(gòu)中設(shè)計(jì)模式的應(yīng)用 Jun 02, 2024 am 10:35 AM

SpringMVC框架使用以下設(shè)計(jì)模式:1.單例模式:管理Spring容器;2.門面模式:協(xié)調(diào)控制器、視圖和模型互動(dòng);3.策略模式:根據(jù)請(qǐng)求選擇請(qǐng)求處理程序;4.觀察者模式:發(fā)布和監(jiān)聽(tīng)?wèi)?yīng)用程式事件。這些設(shè)計(jì)模式增強(qiáng)了SpringMVC的功能和靈活性,使開(kāi)發(fā)者可以創(chuàng)建高效、可維護(hù)的應(yīng)用程式。

java框架中使用設(shè)計(jì)模式的優(yōu)缺點(diǎn)有哪些? java框架中使用設(shè)計(jì)模式的優(yōu)缺點(diǎn)有哪些? Jun 01, 2024 pm 02:13 PM

Java框架中使用設(shè)計(jì)模式的優(yōu)點(diǎn)包括:程式碼可讀性、可維護(hù)性和可擴(kuò)充性增強(qiáng)。缺點(diǎn)包括:過(guò)度使用導(dǎo)致複雜性、效能開(kāi)銷以及學(xué)習(xí)曲線陡峭。實(shí)戰(zhàn)案例:代理模式用於延遲載入物件。明智地使用設(shè)計(jì)模式可充分利用其優(yōu)勢(shì)並最小化缺點(diǎn)。

See all articles