为其他对象提供一种代理以控制对这个对象的访问,通俗来讲就是中介,你只知道中介,不清楚真正的来源事谁,
在代理类里还可以增加一下操作,代理类本身不实现服务,只是调用委托类对象
正向代理反向代理,正向事你知道的,反向是你不知道的
不用修改已经封装好的未退类,起一个隔离作用
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();
注意代理跟适配器,装饰器的关系
装饰器:会对方法进行增加,修饰,会将原始类作为参数传入,不确定是哪个
适配器:改变方法行为,保持接口统一性,但得到不同的实现
代理:重点在于控制访问,可以直接定义号代理那个类
