簡單工廠模式及php實現



簡單工廠模式(Simple Factory Pattern):

  又稱為靜態工廠方法(Static Factory Method)模式,它屬於類創建型模式。在簡單工廠模式中,可以根據參數的不同返回不同類的實例。簡單工廠模式專門定義一個類來負責創建其他類的實例,被創建的實例通常都具有共同的父類。

簡單工廠模式包含如下角色:

  Factory:工廠角色,工廠角色負責實現創建所有實例的內部邏輯

  Product:抽象產品角色,抽象產品角色是所創建的所有對象的父類,負責描述所有實例所共有的公共接口

  ConcreteProduct:具體產品角色,具體產品角色是創建目標,所有創建的對象都充當這個角色的某個具體類的實例。

UML圖:

  ../_images/SimpleFactory.jpg

abstract class Fruit{

}
class Apple extends Fruit{
  function __construct(){
    echo "Apple";
  }
}

class Banana extends Fruit{
  function __construct(){
    echo "Banana";
  }
}

class Factory{
  static function fruit($classname){
    if($classname == "Apple"){
      return new Apple();
    }else if($classname == "Banana"){
      return new Banana();
    }
    return null;
  }
}


/*
//可以與類自動加載函數相結合
class Factory{
  static function fruit($classname){
    return new $classname();
  }
}
*/

//測試 Factory::fruit("Apple"); Factory::fruit("Banana");

  簡單工廠模式的缺點
  1、由於工廠類集中了所有產品創建邏輯,一旦不能正常工作,整個系統都要受到影響。
  2、使用簡單工廠模式將會增加系統中類的個數,在一定程序上增加了系統的復雜度和理解難度。
  3、系統擴展困難,一旦添加新產品就不得不修改工廠邏輯,在產品類型較多時,有可能造成工廠邏輯過於復雜,不利於系統的擴展和維護。
  4、簡單工廠模式由於使用了靜態工廠方法,造成工廠角色無法形成基於繼承的等級結構


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM