案例解析代理模式是什么-創(chuàng)新互聯(lián)

案例解析代理模式是什么?這個問題可能是我們?nèi)粘W習或工作經(jīng)常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家?guī)淼膮⒖純?nèi)容,讓我們一起來看看吧!

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:國際域名空間、網(wǎng)絡(luò)空間、營銷軟件、網(wǎng)站建設(shè)、淮南網(wǎng)站維護、網(wǎng)站推廣。

代理模式

代理模式的作用和繼承以及接口和組合的作用類似,都是為了聚合共用部分,減少公共部分的代碼。

不同的是相比起繼承,他們的語境不同,繼承要表達的含義是 is-a, 而代理要表達的含義更接近于接口, 是 has-a,而且使用代理的話應(yīng)了一句話"少用繼承,多用組合",要表達的意思其實也就是降低耦合度了。

對于組合來說,他比組合更具靈活性,比如我們將代理對象設(shè)為private,那么我可以選擇只提供一部分的代理功能,例如Printer的某一個或兩個方法,又或者在提供Printer的功能的時候加入一些其他的操作,這些都是可以的。

<?php
//代理對象,一臺打印機
class Printer { 
    public function printSth() {
        echo '我可以打印<br>';
    }
}
//這是一個文印處理店,只文印,賣紙,不照相
class TextShop {
    private $printer;
    public function __construct(Printer $printer) {
        $this->printer = $printer;
    }
    //賣紙
    public function sellPaper() {
        echo 'give you some paper <br>';
    }
    //將代理對象有的功能交給代理對象處理
    public function __call($method, $args) {
        if(method_exists($this->printer, $method)) {
            $this->printer->$method($args);
        }
    }
}
//這是一個照相店,只文印,拍照,不賣紙
class PhotoShop {    
    private $printer;
    
    public function __construct(Printer $printer) {
        $this->printer = $printer;
    }
    
    public function takePhotos() {    //照相
        echo 'take photos for you <br>';
    }
    
    public function __call($method, $args) {    //將代理對象有的功能交給代理對象處理
        if(method_exists($this->printer, $method)) {
            $this->printer->$method($args);
        }
    }
}
$printer = new Printer();
$textShop = new TextShop($printer);
$photoShop = new PhotoShop($printer);
$textShop->printSth();
$photoShop->printSth();

感謝各位的閱讀!看完上述內(nèi)容,你們對案例解析代理模式是什么大概了解了嗎?希望文章內(nèi)容對大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

文章題目:案例解析代理模式是什么-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://muchs.cn/article32/csgipc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、定制網(wǎng)站電子商務(wù)、網(wǎng)站策劃云服務(wù)器、小程序開發(fā)

廣告

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

成都定制網(wǎng)站網(wǎng)頁設(shè)計