GoF类图
代理模式
代码实现

interfaceSubject{publicfunctionRequest();}classRealSubjectimplementsSubject{functionRequest(){echo"真实的操作",PHP_EOL;}}classProxyimplementsSubject{private$realSubject;publicfunction__construct(){$this->realSubject=newRealSubject();}publicfunctionRequest(){echo"代理的操作",PHP_EOL;$this->realSubject->Request();}}$proxy=newProxy();$proxy->Request();
代理模式的实现实在非常大略,或许你在不经意间常常会用到请把稳代理模式与装饰器、适配器的差异,其余,模板方法模式也和它很像装饰器,一样平常是对工具进行装饰,个中的方法行为会有增加,以润色工具为主适配器,一样平常会改变方法行为,目的是保持接口的统一但得到不同的实现模板方法模式,我们后面会讲,这里只要知道,模板方法是在抽象类中去组合调用子类的方法代理模式有几种形式:远程代理(例如:第三方接口SDK)、虚代理(例如:异步加载图片)、保护代理&智能指引(例如:权限保护),而我们代码实现的最普通的代理,实在便是让代理类来代替真实类的操作
完全代码:https://github.com/zhangyue0503/designpatterns-php/blob/master/12.proxy/source/proxy.php
实例短信功能不能停,这回用大略的代理模式来增加一些前后的提示吧!
短信发送类图
短信发送代理模式版
完全源码:https://github.com/zhangyue0503/designpatterns-php/blob/master/12.proxy/source/proxy-msg.php
<?phpinterfaceSendMessage{publicfunctionSend();}classRealSendMessageimplementsSendMessage{publicfunctionSend(){echo'短信发送中...',PHP_EOL;}}classProxySendMessageimplementsSendMessage{private$realSendMessage;publicfunction__construct($realSendMessage){$this->realSendMessage=$realSendMessage;}publicfunctionSend(){echo'短信开始发送',PHP_EOL;$this->realSendMessage->Send();echo'短信结束发送',PHP_EOL;}}$sendMessage=newProxySendMessage(newRealSendMessage());$sendMessage->Send();
解释
例子非常大略,还是普通代理的实现,这里我们讲下正向代理和反向代理常日我们所说的科学上网(fanqiang),便是正向代理,由我们利用软件或者自己配置代理网关上网,实际便是我们把要求发送到指定的网关,再由这个网关代替我们去访问其他网站,这种由我们指定选择的代理便是正向代理PHPer们大多还是比较清楚反向代理的,毕竟现在Nginx已经代替Apache成为了PHP标配了。当我们访问一个网站的时候,某些路径或者域名并不一定是在这台做事器上,他们在做事器上直接代理到了其他的做事器乃至是别人家的站点。对付这个我们这些浏览网站的人是不知道的,这种我们不知道就被莫名其妙代理了的情形便是反向代理,一样平常在做事后台运维中是必备知识!下期看点
代理模式说大略也大略,说繁芜的话也很繁芜,总之还是根据业务形态来决定,模式真的只是为理解决问题而生的,问题能办理了,你也可以叫他经济人模式嘛,你说是不是!
!
下一篇我们一起学习享元模式,听着又很高大上吧!
!