当前位置:Gxlcms > PHP教程 > php设计模式之Facade(外观模式)介绍

php设计模式之Facade(外观模式)介绍

时间:2021-07-01 10:21:17 帮助过:44人阅读

为子系统中的一组接口提供一个一致的界面,定义一个高层接口,使得这一子系统更加的容易使用

模式定义:外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式又称为门面模式,它是一种对象结构型模式。
模式结构:

外观模式的就是让client客户端以一种简单的方式来调用比较复杂的系统,来完成一件事情。

外观模式,也叫门面模式。它多用于在多个子系统之间,作为中间层。用户通过Facade对象,直接请求工作,省去了用户调用多个子系统的复杂动作。

外观模式常举的一个例子,就是我们买了好多支股票,但是时间有限。盯盘很复杂,我们搞得一团糟。所以,我们干脆买了股票基金。股票基金就好比于外观模式的Facade对象,而子系统就是股票基金投的各支股票。

代码如下:

  1. class car {
  2. public function start() {
  3. print_r("车子启动");
  4. }
  5. public function check_stop() {
  6. print_r("刹车检查正常");
  7. }
  8. public function check_box() {
  9. print_r("检查油箱正常");
  10. }
  11. public function check_console() {
  12. print_r("检查仪表盘是否异常");
  13. }
  14. }
  15. //facade模式
  16. class carfacade {
  17. public function catgo(car $carref){
  18. $carref->check_stop();
  19. $carref->check_box();
  20. $carref->check_console();
  21. $carref->start();
  22. }
  23. }
  24. //客户端可以简单的去调用。
  25. $car = new car();
  26. $carObj = new carfacade();
  27. $carObj->catgo($car);

代码如下:

  1. <?php
  2. /**
  3. * 外观模式 示例
  4. *
  5. * 为子系统中的一组接口提供一个一致的界面,定义一个高层接口,使得这一子系统更加的容易使用
  6. */
  7. class SubSytem1
  8. {
  9. public function Method1()
  10. {
  11. echo "subsystem1 method1<br/>";
  12. }
  13. }
  14. class SubSytem2
  15. {
  16. public function Method2()
  17. {
  18. echo "subsystem2 method2<br/>";
  19. }
  20. }
  21. class SubSytem3
  22. {
  23. public function Method3()
  24. {
  25. echo "subsystem3 method3<br/>";
  26. }
  27. }
  28. class Facade
  29. {
  30. private $_object1 = null;
  31. private $_object2 = null;
  32. private $_object3 = null;
  33. public function construct()
  34. {
  35. $this->_object1 = new SubSytem1();
  36. $this->_object2 = new SubSytem2();
  37. $this->_object3 = new SubSytem3();
  38. }
  39. public function MethodA() {
  40. echo "Facade MethodA<br/>";
  41. $this->_object1->Method1();
  42. $this->_object2->Method2();
  43. }
  44. public function MethodB() {
  45. echo "Facade MethodB<br/>";
  46. $this->_object2->Method2();
  47. $this->_object3->Method3();
  48. }
  49. }
  50. // 实例化
  51. $objFacade = new Facade();
  52. $objFacade->MethodA();
  53. $objFacade->MethodB();

以上就是php设计模式之Facade(外观模式)介绍的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行