bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

PHP中的門面模式是什么

本篇內(nèi)容介紹了“PHP中的門面模式是什么”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

公司主營(yíng)業(yè)務(wù):成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)推出烏當(dāng)免費(fèi)做網(wǎng)站回饋大家。

門面模式,也叫外觀模式。不管是門面還是外觀,都是我們對(duì)外的媒介,就好像我們的臉面一樣。所以,這個(gè)模式最大的特點(diǎn)就是要表現(xiàn)的“好看”。怎么說(shuō)呢?一堆復(fù)雜的對(duì)象調(diào)用,自己都看蒙了,特別是對(duì)老系統(tǒng)進(jìn)行升級(jí)維護(hù)的時(shí)候。用門面來(lái)把老系統(tǒng)的功能調(diào)用封裝起來(lái),在外面看來(lái)就和新系統(tǒng)一樣,這就是門面模式的用途啦!

Gof類圖及解釋

GoF定義:為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,F(xiàn)acade模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。

GoF類圖

PHP中的門面模式是什么

代碼實(shí)現(xiàn)

class SubSystemOne
{
    public function MethodOne()
    {
        echo '子系統(tǒng)方法一', PHP_EOL;
    }
}
class SubSystemTwo
{
    public function MethodTwo()
    {
        echo '子系統(tǒng)方法二', PHP_EOL;
    }
}
class SubSystemThree
{
    public function MethodThree()
    {
        echo '子系統(tǒng)方法三', PHP_EOL;
    }
}
class SubSystemFour
{
    public function MethodFour()
    {
        echo '子系統(tǒng)方法四', PHP_EOL;
    }
}

定義四個(gè)或者N多個(gè)子系統(tǒng),這個(gè)沒(méi)什么好說(shuō)的吧,可以想象是很多子系統(tǒng),而且他們之間并不一定和這四個(gè)子系統(tǒng)一樣的相似,有可能是千差萬(wàn)別的。

class Facade
{

    private $subStytemOne;
    private $subStytemTwo;
    private $subStytemThree;
    private $subStytemFour;
    public function __construct()
    {
        $this->subSystemOne = new SubSystemOne();
        $this->subSystemTwo = new SubSystemTwo();
        $this->subSystemThree = new SubSystemThree();
        $this->subSystemFour = new SubSystemFour();
    }

    public function MethodA()
    {
        $this->subSystemOne->MethodOne();
        $this->subSystemTwo->MethodTwo();
    }
    public function MethodB()
    {
        $this->subSystemOne->MethodOne();
        $this->subSystemTwo->MethodTwo();
        $this->subSystemThree->MethodThree();
        $this->subSystemFour->MethodFour();
    }
}

通過(guò)門面類將這些子系統(tǒng)包裝起來(lái),對(duì)外提供的只是門面新定義的方法。

$facade = new Facade();
$facade->MethodA();
$facade->MethodB();

客戶端的調(diào)用就非常簡(jiǎn)單了,我們不用知道具體調(diào)用了哪些子系統(tǒng),只需要知道門面的這些方法干什么了就行啦!

  • 門面模式就是這么的簡(jiǎn)單,而且只要是真實(shí)的在項(xiàng)目中做過(guò)開(kāi)發(fā)的朋友一定在不知不覺(jué)中就已經(jīng)使用過(guò)這個(gè)模式了

  • 當(dāng)你需要為一個(gè)復(fù)雜子系統(tǒng)提供一個(gè)簡(jiǎn)單的接口時(shí),門面模式就非常適用。同時(shí),如果客戶程序與抽象類的實(shí)現(xiàn)部分之間存在著很大的依賴性時(shí),也可以引入門面模式來(lái)進(jìn)行解耦,提高子系統(tǒng)的獨(dú)立性和可維護(hù)性。另外就是你需要構(gòu)建一個(gè)層次結(jié)構(gòu)的子系統(tǒng)時(shí),門面可以充當(dāng)每層子系統(tǒng)的入口點(diǎn)

  • Laravel中的門面系統(tǒng)相信使用過(guò)框架的人一定都用過(guò),比如:Cache::put()。在Laravel中,門面的實(shí)現(xiàn)使用了一個(gè)魔術(shù)方法__callStatic()。然后讓對(duì)象的方法可以實(shí)現(xiàn)直接使用靜態(tài)方法來(lái)進(jìn)行調(diào)用。是不是很神奇。有興趣的朋友可以翻翻源碼,就在/Illuminate/Support/Facades/Facade.php中。

  • 劃重點(diǎn):三層結(jié)構(gòu)或者M(jìn)VC也是門面模式的體現(xiàn)哦。上面說(shuō)了,門面模式適合分層子系統(tǒng)的維護(hù)。而三層結(jié)構(gòu)、MVC、MVP、MVVM這些貨,本質(zhì)上都是為了分層,而分層的目的,就是為了降低系統(tǒng)的復(fù)雜性。

光賣我們的手機(jī)可不行,向X米一樣做高科技的家電企業(yè)才是我們最終的目標(biāo)。不過(guò)那么多的家電產(chǎn)品我們可生產(chǎn)不過(guò)來(lái),于是,我們決定做一個(gè)商城(Facade)讓一些質(zhì)量非常好的商家加入我們的陣營(yíng),將他們的產(chǎn)品(SubSystem)放到商城中一起賣。當(dāng)然,這些商品可是經(jīng)過(guò)我們慎重挑選的,絕對(duì)都是優(yōu)品中的優(yōu)品哦!!

完整代碼:https://github.com/zhangyue0503/designpatterns-php/blob/master/19.facade/source/facade.php

實(shí)例

這回我們將短信的發(fā)送以發(fā)送的維度進(jìn)行包裝,將不同的短信和推送運(yùn)營(yíng)商的接口包裝起來(lái),在發(fā)送的時(shí)候只需要通過(guò)發(fā)送類就可以控制用不同的第三方服務(wù)進(jìn)行短信或推送的發(fā)送啦,想想都很方便呢!

短信發(fā)送類圖

PHP中的門面模式是什么

完整源碼:https://github.com/zhangyue0503/designpatterns-php/blob/master/19.facade/source/facade-push.php

<?php

class Send
{

    private $aliYunService;
    private $jiGuangService;

    private $message;
    private $push;

    public function __construct()
    {
        $this->aliYunService = new AliYunService();
        $this->jiGuangService = new JiGuangService();

        $this->message = new MessageInfo();
        $this->push = new PushInfo();
    }

    public function PushAndSendAliYun()
    {
        $this->message->Send($this->aliYunService);
        $this->push->Push($this->aliYunService);
    }

    public function PushAndSendJiGuang()
    {
        $this->message->Send($this->jiGuangService);
        $this->push->Push($this->jiGuangService);
    }
}

class MessageInfo
{
    public function Send($service)
    {
        $service->Send();
    }
}

class PushInfo
{
    public function Push($service)
    {
        $service->Push();
    }
}

class AliYunService
{
    public function Send()
    {
        echo '發(fā)送阿里云短信!', PHP_EOL;
    }
    public function Push()
    {
        echo '推送阿里云通知!', PHP_EOL;
    }
}

class JiGuangService
{
    public function Send()
    {
        echo '發(fā)送極光短信!', PHP_EOL;
    }
    public function Push()
    {
        echo '推送極光通知!', PHP_EOL;
    }
}

$send = new Send();
$send->PushAndSendAliYun();
$send->PushAndSendJiGuang();

說(shuō)明

  • 依然還是熟悉的配方熟悉的味道。在這里,可以想象我們的第三方服務(wù)類都是較老的接口,或者已經(jīng)是很復(fù)雜的接口了。這時(shí),使用外觀模式一來(lái)是可以與新系統(tǒng)配合,二來(lái)也能降低復(fù)雜度

  • 但是要注意的,外觀類本身可能成為復(fù)雜度的來(lái)源,不過(guò)幸好我們可以遵從單一職責(zé)的原則,一個(gè)外觀類就做一件事就好啦

“PHP中的門面模式是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

本文名稱:PHP中的門面模式是什么
標(biāo)題網(wǎng)址:http://vcdvsql.cn/article16/gjepgg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)網(wǎng)站維護(hù)自適應(yīng)網(wǎng)站小程序開(kāi)發(fā)定制網(wǎng)站外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化