中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

怎么在php項目中實現一個簡單工廠模式

發布時間:2020-12-10 15:02:29 來源:億速云 閱讀:346 作者:Leah 欄目:開發技術

今天就跟大家聊聊有關怎么在php項目中實現一個簡單工廠模式,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

一、概念

簡單工廠模式 【靜態工廠方法模式】(Static Factory Method)
是類的創建模式

工廠模式的幾種形態:

1、簡單工廠模式(Simple Factory)又叫做 靜態工廠方法模式(Static Factory Method)

2、工廠方法模式(Factory Method)又叫做 多態性工廠模式(Polymorphic Factory)

3、抽象工廠模式(Abstract Factory)又叫做 工具箱模式(ToolKit)

二、配圖分析:

怎么在php項目中實現一個簡單工廠模式

三、代碼實例

該實例代碼經過測試可以運行,具體如下:

<&#63;php
/**
 * 一個事例
 *
 * 一個農場,要向市場銷售水果
 * 農場里有三種水果 蘋果、葡萄
 * 我們設想:1、水果有多種屬性,每個屬性都有不同,但是,他們有共同的地方 | 生長、種植、收貨、吃
 *       2、將來有可能會增加新的水果、我們需要定義一個接口來規范他們必須實現的方法
 *       3、我們需要獲取某個水果的類,要從農場主那里去獲取某個水果的實例,來知道如何生長、種植、收貨、吃
 */


/**
 * 虛擬產品接口類
 * 定義好需要實現的方法
 */

interface fruit{

  /**
   * 生長
   */
  public function grow();

  /**
   * 種植
   */
  public function plant();

  /**
   * 收獲
   */
  public function harvest();

  /**
   * 吃
   */
  public function eat();
  
}

/**
 * 定義具體產品類 蘋果
 * 首先,我們要實現所繼承的接口所定義的方法
 * 然后定義蘋果所特有的屬性,以及方法
 */
class apple implements fruit{

  //蘋果樹有年齡
  private $treeAge;

  //蘋果有顏色
  private $color;

  public function grow(){
    echo "grape grow";
  }

  public function plant(){
    echo "grape plant";
  }

  public function harvest(){
    echo "grape harvest";
  }

  public function eat(){
    echo "grape eat";
  }

  //取蘋果樹的年齡
  public function getTreeAge(){
    return $this->treeAge;
  }

  //設置蘋果樹的年齡
  public function setTreeAge($age){
    $this->treeAge = $age;
    return trie;
  }

}

/**
 * 定義具體產品類 葡萄
 * 首先,我們要實現所繼承的接口所定義的方法
 * 然后定義葡萄所特有的屬性,以及方法
 */
class grape implements fruit{

  //葡萄是否有籽
  private $seedLess;

  public function grow(){
    echo "apple grow";
  }

  public function plant(){
    echo "apple plant";
  }

  public function harvest(){
    echo "apple harvest";
  }

  public function eat(){
    echo "apple eat";
  }

  //有無籽取值
  public function getSeedLess(){
    return $this->seedLess;
  }

  //設置有籽無籽
  public function setSeedLess($seed){
    $this->seedLess = $seed;
    return true;
  }
}

/**
 *農場主類 用來獲取實例化的水果
 *
 */
class farmer{

  //定義個靜態工廠方法
  public static function factory($fruitName){
    switch ($fruitName) {
      case 'apple':
        return new apple();
        break;
      case 'grape':
        return new grape();
        break;
      default:
        throw new badFruitException("Error no the fruit", 1);
        break;
    }
  }
}

class badFruitException extends Exception{
  public $msg;
  public $errType;
  public function __construct($msg = '' , $errType = 1){
    $this->msg = $msg;
    $this->errType = $errType;
  }  
}

/**
 * 獲取水果實例化的方法
 */
try{
  $appleInstance = farmer::factory('apple');
  var_dump($appleInstance);
}catch(badFruitException $err){
  echo $err->msg . "_______" . $err->errType;
}

看完上述內容,你們對怎么在php項目中實現一個簡單工廠模式有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

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

AI

阳谷县| 兰溪市| 平乡县| 无棣县| 锦州市| 六枝特区| 吉林省| 会泽县| 都安| 霍山县| 田东县| 英吉沙县| 阿拉善盟| 云和县| 信阳市| 乐昌市| 岑巩县| 陇西县| 英吉沙县| 古浪县| 阿拉善右旗| 封丘县| 宁陵县| 绍兴市| 吉木萨尔县| 明水县| 洛川县| 松滋市| 延寿县| 冕宁县| 云霄县| 聂荣县| 万全县| 贵州省| 五家渠市| 晋江市| 晋宁县| 时尚| 常山县| 嘉善县| 邓州市|