91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP設計模式之工廠方法設計模式的示例分析

發布時間:2021-08-05 14:38:06 來源:億速云 閱讀:127 作者:小新 欄目:開發技術

小編給大家分享一下PHP設計模式之工廠方法設計模式的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

一、什么是工廠方法模式

作為一種創建型設計模式,工廠方法模式就是要創建“某種東西”。對于工廠方法,要創建的“東西”是一個產品,這個產品與創建它的類之間不存在綁定。實際上,為了保持這種松耦合,客戶會通過一個工廠發出請求,再由工廠創建所請求的產品。利用工廠方法模式,請求者只發出請求,而不具體創建產品。

二、什么時候使用工廠方法模式

如果實例化對象的子類可能改變,就要使用工廠方法模式。

三、一般工廠方法模式

使用一般工廠方法模式時,客戶只包含工廠的引用,一個工廠生產一種產品。增加一種產品的同時需要增加一個新工廠類和一個新產品類。

<?php
/**
*  一般工廠方法設計模式
**/
//工廠抽象類
abstract class Factory
{
  protected abstract function produce();
  public function startFactory()
  {
    $pro = $this->produce();
    return $pro;
  }
}
//文本工廠
class TextFactory extends Factory
{
  protected function produce()
  {
    $textProduct = new TextProduct();
    return $textProduct->getProperties();
  }
}
//圖像工廠
class ImageFactory extends Factory
{
  protected function produce()
  {
    $imageProduct = new ImageProduct();
    return $imageProduct->getProperties();
  }
}
//產品類接口
interface Product
{
  public function getProperties();
}
//文本產品
class TextProduct implements Product
{
  private $text;
  function getProperties()
  {
    $this->text = "此處為文本";
    return $this->text;
  }
}
//圖像產品
class ImageProduct implements Product
{
  private $image;
  function getProperties()
  {
    $this->image = "此處為圖像";
    return $this->image;
  }
}
//客戶類
class Client
{
  private $textFactory;
  private $imageFactory;
  public function __construct()
  {
    $this->textFactory = new TextFactory();
    echo $this->textFactory->startFactory() . '<br />';
    $this->imageFactory = new ImageFactory();
    echo $this->imageFactory->startFactory() . '<br />';
  }
}
$client = new Client();
/*運行結果:
此處為文本
此處為圖像
*/
?>

四、參數化工廠方法模式

使用參數化工廠方法模式時,客戶包含工廠和產品的引用,發出請求時需要指定產品的種類,一個工廠生產多種產品。增加一種產品時只需要增加一個新產品類即可。

<?php
/**
*  參數化工廠方法設計模式
**/
//工廠抽象類
abstract class Factory
{
  protected abstract function produce(Product $product);
  public function startFactory(Product $product)
  {
    $pro = $this->produce($product);
    return $pro;
  }
}
//工廠實現
class ConcreteFactory extends Factory
{
  protected function produce(Product $product)
  {
    return $product->getProperties();
  }
}
//產品類接口
interface Product
{
  public function getProperties();
}
//文本產品
class TextProduct implements Product
{
  private $text;
  public function getProperties()
  {
    $this->text = "此處為文本";
    return $this->text;
  }
}
//圖像產品
class ImageProduct implements Product
{
  private $image;
  public function getProperties()
  {
    $this->image = "此處為圖像";
    return $this->image;
  }
}
//客戶類
class Client
{
  private $factory;
  private $textProduct;
  private $imageProduct;
  public function __construct()
  {
    $factory = new ConcreteFactory();
    $textProduct = new TextProduct();
    $imageProduct = new ImageProduct();
    echo $factory->startFactory($textProduct) . '<br />';
    echo $factory->startFactory($imageProduct) . '<br />';
  }
}
$client = new Client();
/*運行結果:
此處為文本
此處為圖像
*/
?>

以上是“PHP設計模式之工廠方法設計模式的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

鄂尔多斯市| 舟山市| 西乌| 开远市| 敦化市| 威海市| 乐至县| 九江县| 图木舒克市| 青龙| 南阳市| 绥江县| 塘沽区| 深圳市| 措勤县| 车险| 乐安县| 四会市| 屏东县| 武川县| 黄石市| 英德市| 东安县| 汝南县| 衡山县| 原阳县| 泽州县| 临城县| 山丹县| 镇远县| 政和县| 林西县| 恭城| 阆中市| 北票市| 黎城县| 工布江达县| 芦山县| 锡林郭勒盟| 德钦县| 栾城县|