在之前的文章《浅谈PHP中的责任链模式》中我们介绍了PHP中的责任链模式,下面本篇文章带大家了解一下PHP设计模式中的代理模式。
代理人这个职业在中国有另外一个称呼,房产经济人、保险经济人,其实这个职业在国外都是叫做房产代理或者保险代理。顾名思义,就是由他们来帮我们处理这些对我们大部分人来说都比较生疏的专业领域的工作。代理模式也是一样的道理,同时,在这篇文章中还会简单的介绍正向代理和反向代理是怎么回事。
Gof类图及解释
GoF定义:为其它对象提供一种代理以控制对这个对象的访问
GoF类图
代码实现
interface Subject { public function Request(); } class RealSubject implements Subject { function Request() { echo "真实的操作", 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();
- 代理模式的实现其实非常简单,或许你在不经意间经常会用到
- 请注意代理模式与装饰器、适配器的区别,另外,模板方法模式也和它很像
- 装饰器,一般是对对象进行装饰,其中的方法行为会有增加,以修饰对象为主
- 适配器,一般会改变方法行为,目的是保持接口的统一但得到不同的实现
- 模板方法模式,我们后面会讲,这里只要知道,模板方法是在抽象类中去组合调用子类的方法
- 代理模式有几种形式:远程代理(例如:第三方接口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
<?php interface SendMessage { public function Send(); } class RealSendMessage implements SendMessage { public function Send() { echo '短信发送中...', PHP_EOL; } } class ProxySendMessage implements SendMessage { private $realSendMessage; public function __construct($realSendMessage) { $this->realSendMessage = $realSendMessage; } public function Send() { echo '短信开始发送', PHP_EOL; $this->realSendMessage->Send(); echo '短信结束发送', PHP_EOL; } } $sendMessage = new ProxySendMessage(new RealSendMessage()); $sendMessage->Send();
说明
- 例子非常简单,还是普通代理的实现,这里我们讲下正向代理和反向代理
- 通常我们所说的科学上网(fanqiang),就是正向代理,由我们使用软件或者自己配置代理网关上网,实际就是我们把请求发送到指定的网关,再由这个网关代替我们去访问其他网站,这种由我们指定选择的代理就是正向代理
- PHPer们大多还是比较清楚反向代理的,毕竟现在Nginx已经代替Apache成为了PHP标配了。当我们访问一个网站的时候,某些路径或者域名并不一定是在这台服务器上,他们在服务器上直接代理到了其他的服务器甚至是别人家的站点。对于这个我们这些浏览网站的人是不知道的,这种我们不知道就被莫名其妙代理了的情况就是反向代理,一般在服务后台运维中是必备知识!
推荐学习:《PHP视频教程》
以上就是聊聊PHP中的代理模式(正向代理和反向代理)的详细内容,更多请关注亿码酷站其它相关文章!
聊聊PHP中的代理模式(正向代理和反向代理)
—–文章转载自PHP中文网如有侵权请联系ymkuzhan@126.com删除
转载请注明来源:聊聊PHP中的代理模式(正向代理和反向代理)
本文永久链接地址:https://www.ymkuzhan.com/33382.html
本文永久链接地址:https://www.ymkuzhan.com/33382.html
下载声明:
本站资源如无特殊说明默认解压密码为www.ymkuzhan.com建议使用WinRAR解压; 本站资源来源于用户分享、互换、购买以及网络收集等渠道,本站不提供任何技术服务及有偿服务,资源仅提供给大家学习研究请勿作它用。 赞助本站仅为维持服务器日常运行并非购买程序及源码费用因此不提供任何技术支持,如果你喜欢该程序,请购买正版! 版权声明:
下载本站资源学习研究的默认同意本站【版权声明】若本站提供的资源侵犯到你的权益,请提交版权证明文件至邮箱ymkuzhan#126.com(将#替换为@)站长将会在三个工作日内为您删除。 免责声明:
您好,本站所有资源(包括但不限于:源码、素材、工具、字体、图像、模板等)均为用户分享、互换、购买以及网络收集而来,并未取得原始权利人授权,因此禁止一切商用行为,仅可用于个人研究学习使用。请务必于下载后24小时内彻底删除,一切因下载人使用所引起的法律相关责任,包括但不限于:侵权,索赔,法律责任,刑事责任等相关责任,全部由下载人/使用人,全部承担。以上说明,一经发布视为您已全部阅读,理解、同意以上内容,如对以上内容持有异议,请勿下载,谢谢配合!支持正版,人人有责,如不慎对您的合法权益构成侵犯,请联系我们对相应内容进行删除,谢谢!