免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
PHP設(shè)計模式之代理模式

PHP設(shè)計模式之代理模式

代理人這個職業(yè)在中國有另外一個稱呼,房產(chǎn)經(jīng)濟(jì)人、保險經(jīng)濟(jì)人,其實(shí)這個職業(yè)在國外都是叫做房產(chǎn)代理或者保險代理。顧名思義,就是由他們來幫我們處理這些對我們大部分人來說都比較生疏的專業(yè)領(lǐng)域的工作。代理模式也是一樣的道理,同時,在這篇文章中還會簡單的介紹正向代理和反向代理是怎么回事。

Gof類圖及解釋

GoF定義:為其它對象提供一種代理以控制對這個對象的訪問

GoF類圖

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

interface Subject
{
public function Request();
}

class RealSubject implements Subject
{
function Request()
{
echo "真實(shí)的操作", PHP_EOL;
}
}

class Proxy implements Subject
{
private $realSubject;

public function __construct()
{
$this->realSubject = new RealSubject();
}

public function Request()
{
echo "代理的操作", PHP_EOL;
$this->realSubject->Request();
}
}

$proxy = new Proxy();
$proxy->Request();
  • 代理模式的實(shí)現(xiàn)其實(shí)非常簡單,或許你在不經(jīng)意間經(jīng)常會用到

  • 請注意代理模式與裝飾器、適配器的區(qū)別,另外,模板方法模式也和它很像

  • 裝飾器,一般是對對象進(jìn)行裝飾,其中的方法行為會有增加,以修飾對象為主

  • 適配器,一般會改變方法行為,目的是保持接口的統(tǒng)一但得到不同的實(shí)現(xiàn)

  • 模板方法模式,我們后面會講,這里只要知道,模板方法是在抽象類中去組合調(diào)用子類的方法

  • 代理模式有幾種形式:遠(yuǎn)程代理(例如:第三方接口SDK)、虛代理(例如:異步加載圖片)、保護(hù)代理&智能指引(例如:權(quán)限保護(hù)),而我們代碼實(shí)現(xiàn)的最普通的代理,其實(shí)就是讓代理類來代替真實(shí)類的操作

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

實(shí)例

短信功能不能停,這回用簡單的代理模式來增加一些前后的提示吧!

短信發(fā)送類圖

完整源碼:https://github.com/zhangyue0503/designpatterns-php/blob/master/12.proxy/source/proxy-msg.php

<?php

interface SendMessage
{
public function Send();
}

class RealSendMessage implements SendMessage
{
public function Send()
{
echo '短信發(fā)送中...', PHP_EOL;
}
}

class ProxySendMessage implements SendMessage
{
private $realSendMessage;

public function __construct($realSendMessage)
{
$this->realSendMessage = $realSendMessage;
}

public function Send()
{
echo '短信開始發(fā)送', PHP_EOL;
$this->realSendMessage->Send();
echo '短信結(jié)束發(fā)送', PHP_EOL;
}
}

$sendMessage = new ProxySendMessage(new RealSendMessage());
$sendMessage->Send();

說明

  • 例子非常簡單,還是普通代理的實(shí)現(xiàn),這里我們講下正向代理和反向代理

  • 通常我們所說的科學(xué)上網(wǎng)(fanqiang),就是正向代理,由我們使用軟件或者自己配置代理網(wǎng)關(guān)上網(wǎng),實(shí)際就是我們把請求發(fā)送到指定的網(wǎng)關(guān),再由這個網(wǎng)關(guān)代替我們?nèi)ピL問其他網(wǎng)站,這種由我們指定選擇的代理就是正向代理

  • PHPer們大多還是比較清楚反向代理的,畢竟現(xiàn)在Nginx已經(jīng)代替Apache成為了PHP標(biāo)配了。當(dāng)我們訪問一個網(wǎng)站的時候,某些路徑或者域名并不一定是在這臺服務(wù)器上,他們在服務(wù)器上直接代理到了其他的服務(wù)器甚至是別人家的站點(diǎn)。對于這個我們這些瀏覽網(wǎng)站的人是不知道的,這種我們不知道就被莫名其妙代理了的情況就是反向代理,一般在服務(wù)后臺運(yùn)維中是必備知識!

下期看點(diǎn)

代理模式說簡單也簡單,說復(fù)雜的話也很復(fù)雜,總之還是根據(jù)業(yè)務(wù)形態(tài)來決定,模式真的只是為了解決問題而生的,問題能解決了,你也可以叫他經(jīng)濟(jì)人模式嘛,你說是不是!!下一篇我們一起學(xué)習(xí)享元模式,聽著又很高大上吧!!

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
代理模式——結(jié)構(gòu)型模式(7)
Java代理模式
Matlab代理模式
輕松學(xué),Java 中的代理模式及動態(tài)代理【面試+工作】
結(jié)構(gòu)型模式之代理模式
代理模式
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服