案例解析代理模式是什么?這個問題可能是我們?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)