为其他对象提供一种代理以控制对这个对象的访问,通俗来讲就是中介,你只知道中介,不清楚真正的来源事谁,
    在代理类里还可以增加一下操作,代理类本身不实现服务,只是调用委托类对象
    正向代理反向代理,正向事你知道的,反向是你不知道的
    不用修改已经封装好的未退类,起一个隔离作用

    1. interface SendMessage
    2. {
    3. public function Send();
    4. }
    5. class RealSendMessage implements SendMessage
    6. {
    7. public function Send()
    8. {
    9. echo '短信发送中...', PHP_EOL;
    10. }
    11. }
    12. class ProxySendMessage implements SendMessage
    13. {
    14. private $realSendMessage;
    15. public function __construct($realSendMessage)
    16. {
    17. $this->realSendMessage = $realSendMessage;
    18. }
    19. public function Send()
    20. {
    21. echo '短信开始发送', PHP_EOL;
    22. $this->realSendMessage->Send();
    23. echo '短信结束发送', PHP_EOL;
    24. }
    25. }
    26. $sendMessage = new ProxySendMessage(new RealSendMessage());
    27. $sendMessage->Send();

    注意代理跟适配器,装饰器的关系
    装饰器:会对方法进行增加,修饰,会将原始类作为参数传入,不确定是哪个
    适配器:改变方法行为,保持接口统一性,但得到不同的实现
    代理:重点在于控制访问,可以直接定义号代理那个类