PHP外观模式

Posted wgchen~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP外观模式相关的知识,希望对你有一定的参考价值。

项目目录结构

  • 结构型模式 - php外观模式
  • 把系统中类的调用委托给一个单独的类,对外隐藏了内部的复杂性,很有依赖注入容器的感觉哦

    目录: D:\\facade


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----         2021/9/16     10:19            178 AnimalInterface.php
-a----         2021/9/16     10:19            708 AnimalMaker.php
-a----         2021/9/16     10:19            238 Chicken.php
-a----         2021/9/16     10:19            234 Pig.php
-a----         2021/9/16     10:19            753 test.php

动物接口

<?php
namespace facade;

# 动物接口
interface AnimalInterface
{
  # 生产方法
  public function produce();
}

实体鸡工厂

<?php
namespace facade;

# 实体鸡工厂
class Chicken implements AnimalInterface
{
  # 生产鸡
  public function produce()
  {
    echo "生产了一只鸡~ \\n";
  }
}

实体猪工厂

<?php
namespace facade;

# 实体猪工厂
class Pig implements AnimalInterface
{
  # 生产猪
  public function produce()
  {
    echo "生产了一只猪~ \\n";
  }
}

外观类

<?php
namespace facade;

# 外观类
class AnimalMaker
{
  private $_chicken; # 鸡实工厂例 * @var object

  private $_pig; # 猪实工厂例 * @var object

 # 构造函数
  public function __construct()
  {
    $this->_chicken = new Chicken();
    $this->_pig     = new Pig();
  }

  # 生产方法  * 生产鸡
  public function produceChicken()
  {
    $this->_chicken->produce();
  }

  # 生产方法 * 生产猪
  public function producePig()
  {
    $this->_pig->produce();
  }
}

运行 php test.php

// 注册自加载
spl_autoload_register('autoload');

function autoload($class)
{
  require dirname($_SERVER['SCRIPT_FILENAME']).'//..//'.str_replace('\\\\','/',$class).'.php';
}

/************************************* test *************************************/

use facade\\AnimalMaker;

// 初始化外观类
$animalMaker = new AnimalMaker();

// 生产一只猪
$animalMaker->producePig();

// 生产一只鸡
$animalMaker->produceChicken();
生产了一只猪~
生产了一只鸡~

以上是关于PHP外观模式的主要内容,如果未能解决你的问题,请参考以下文章

PHP外观模式

php PHP片段保存模式

外观模式

在 xamarin.android 中管理屏幕旋转时的片段外观

laravel的Facades外观模式背后实现原理

laravel的Facades外观模式背后实现原理