PHP结构型模式之代理模式

后端开发   发布日期:2025年06月06日   浏览次数:128

代理模式的优点

  • 代理模式可以保护原对象,控制对原对象的访问;
  • 代理模式可以增强原对象的功能,通过代理对象来添加一些额外的功能;
  • 代理模式可以提高系统的灵活性和扩展性,因为代理对象可以动态地创建和销毁。

代理模式的实现

在 PHP 中,我们可以使用以下方式来实现代理模式:

  1. <?php
  2. // 主题接口
  3. interface Subject
  4. {
  5. public function request();
  6. }
  7. // 真实主题类
  8. class RealSubject implements Subject
  9. {
  10. public function request()
  11. {
  12. echo "RealSubject handles request.\n";
  13. }
  14. }
  15. // 代理类
  16. class Proxy implements Subject
  17. {
  18. private $realSubject;
  19. public function __construct(RealSubject $realSubject)
  20. {
  21. $this->realSubject = $realSubject;
  22. }
  23. public function request()
  24. {
  25. if ($this->checkAccess()) {
  26. $this->realSubject->request();
  27. $this->logAccess();
  28. }
  29. }
  30. private function checkAccess()
  31. {
  32. echo "Proxy checks access.\n";
  33. return true;
  34. }
  35. private function logAccess()
  36. {
  37. echo "Proxy logs access.\n";
  38. }
  39. }
  40. // 客户端代码
  41. $realSubject = new RealSubject();
  42. $proxy = new Proxy($realSubject);
  43. $proxy->request();

在上面的实现中,我们首先定义了一个主题接口,并在真实主题类中实现了它。然后,我们定义了一个代理类,它内部维护了一个真实主题对象,通过代理对象来控制对真实主题对象的访问。最后,我们在客户端代码中实例化了真实主题对象和代理对象,并通过调用代理对象的方法来访问真实主题对象。

代理模式的使用

  1. <?php
  2. $realSubject = new RealSubject();
  3. $proxy = new Proxy($realSubject);
  4. $proxy->request();

在上面的使用中,我们实例化了一个真实主题对象和一个代理对象,并通过调用代理对象的方法来访问真实主题对象。

总结

代理模式是一种非常常见的结构型模式,它通过一个代理对象来控制对原对象的访问,从而实现对原对象的保护和增强。在实际开发中,我们可以根据具体的需求,选择不同的代理对象来组合成一个代理类,从而实现对系统的优化。

原文地址:https://blog.csdn.net/weixin_39934453/article/details/129723846

以上就是PHP结构型模式之代理模式的详细内容,更多关于PHP结构型模式之代理模式的资料请关注九品源码其它相关文章!