国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

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

2024-05-05 00:03:23
字體:
來源:轉載
供稿:網友

本文實例講述了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程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 论坛| 丹寨县| 邢台县| 通化市| 巩留县| 谢通门县| 乳山市| 建瓯市| 临汾市| 阿城市| 昌乐县| 项城市| 贡觉县| 望城县| 莱州市| 万山特区| 绍兴县| 东光县| 神木县| 潜山县| 伊宁市| 大理市| 阿拉善盟| 谢通门县| 六盘水市| 巴林左旗| 上虞市| 鄄城县| 周至县| 大理市| 静宁县| 深水埗区| 赤峰市| 象山县| 长丰县| 石楼县| 孝感市| 崇州市| 巴彦县| 九江市| 白河县|