翼度科技»论坛 编程开发 PHP 查看内容

PHP结构型模式之外观模式

7

主题

7

帖子

21

积分

新手上路

Rank: 1

积分
21
外观模式(Facade Pattern)是什么

外观模式是一种结构型模式,它提供了一个简单的接口,隐藏了系统的复杂性,为客户端提供了一个简单的入口点。这种类型的设计模式属于结构型模式,它为子系统的一组接口提供了一个统一的接口。

外观模式的优点


  • 外观模式为客户端提供了一个简单的入口点,从而减少了客户端与系统之间的耦合度;
  • 外观模式可以隐藏系统的复杂性,从而使客户端更加容易使用系统;
  • 外观模式可以让系统易于维护和扩展,因为客户端只需要调用一个简单的接口,而不需要了解系统的实现细节。

外观模式的实现

在 PHP 中,我们可以使用以下方式来实现外观模式:
  1. <?php
  2. // 子系统A
  3. class SubSystemA
  4. {
  5.     public function operationA()
  6.     {
  7.         echo "SubSystemA operation.\n";
  8.     }
  9. }
  10. // 子系统B
  11. class SubSystemB
  12. {
  13.     public function operationB()
  14.     {
  15.         echo "SubSystemB operation.\n";
  16.     }
  17. }
  18. // 子系统C
  19. class SubSystemC
  20. {
  21.     public function operationC()
  22.     {
  23.         echo "SubSystemC operation.\n";
  24.     }
  25. }
  26. // 外观类
  27. class Facade
  28. {
  29.     private $subSystemA;
  30.     private $subSystemB;
  31.     private $subSystemC;
  32.     public function __construct()
  33.     {
  34.         $this->subSystemA = new SubSystemA();
  35.         $this->subSystemB = new SubSystemB();
  36.         $this->subSystemC = new SubSystemC();
  37.     }
  38.     public function operation()
  39.     {
  40.         $this->subSystemA->operationA();
  41.         $this->subSystemB->operationB();
  42.         $this->subSystemC->operationC();
  43.     }
  44. }
  45. // 客户端代码
  46. $facade = new Facade();
  47. $facade->operation();
复制代码
在上面的实现中,我们首先定义了子系统A、子系统B和子系统C,并在外观类中使用了它们的引用。最后,我们在客户端代码中实例化了外观类,并通过调用
  1. operation
复制代码
方法来展示对象的行为。

外观模式的使用
  1. <?php
  2. $facade = new Facade();
  3. $facade->operation();
复制代码
在上面的使用中,我们实例化了一个外观类,并通过调用
  1. operation
复制代码
方法来展示子系统的行为。

总结

外观模式是一种非常常见的结构型模式,它通过提供一个简单的接口,隐藏了系统的复杂性,为客户端提供了一个简单的入口点。在实际开发中,我们可以根据具体的需求,选择不同的子系统来组合成一个外观类,从而为客户端提供一个简单的接口,使得客户端更加容易使用系统。
到此这篇关于PHP结构型模式之外观模式的文章就介绍到这了,更多相关PHP外观模式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

来源:https://www.jb51.net/article/280392.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具