php外观模式

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

<?php
namespace facade;

/**
 * 动物接口
 */
interface AnimalInterface
{
  /**
   * 生产方法
   *
   * @return string
   */
  public function produce();
}
<?php
namespace facade;

/**
 * 实体鸡工厂
 */
class Chicken implements AnimalInterface
{
  /**
   * 生产鸡
   *
   * @return string
   */
  public function produce()
  {
    echo "生产了一只鸡~ \n";
  }
}
<?php
namespace facade;

/**
 * 实体猪工厂
 */
class Pig implements AnimalInterface
{
  /**
   * 生产猪
   *
   * @return string
   */
  public function produce()
  {
    echo "生产了一只猪~ \n";
  }
}
<?php
namespace facade;

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

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

  /**
   * 构造函数
   *
   * @return void
   */
  public function __construct()
  {
    $this->_chicken = new Chicken();
    $this->_pig     = new Pig();
  }

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

  /**
   * 生产方法
   *
   * 生产猪
   * @return string
   */
  public function producePig()
  {
    $this->_pig->produce();
  }
}
<?php
/**
 * 结构型模式
 *
 * php外观模式
 * 把系统中类的调用委托给一个单独的类,对外隐藏了内部的复杂性,很有依赖注入容器的感觉哦
 *
 *   
 * @example 运行 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();

 

 

 

 

 

 

 

 

 

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页
实付 39.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值