標籤:構造 static 執行個體 操作 extends mono 對象 div cal
1.單例模式
class Danli{ //私人化類對象存放變數 private static $_instance; //私人化建構函式private function __construct(){} //私人化複製函數private function __clone(){} //類執行個體化介面public static function getInstance(){ if(!(self::$_instance instanceof self)){ self::$_instance = new self;} return self::$_instance;} //根據使用者ID,擷取使用者名稱public function getUserName($id){ //擷取資料操作 return "返回最後的資料: {$id}";}} $Danli = Danli::getInstance();echo $Danli->getUserName(2); 2.抽象原廠模式 //定義抽象類別 . 抽象方法abstract class CreateObj{ abstract static function getValue($num1,$num2);} //定義加法計算類class CalculationAdd extends CreateObj{ public static function getValue($num1,$num2){ return $num1 + $num2; }}//定義乘法計算類class CalculationSub extends CreateObj{ public static function getValue($num1,$num2){ return $num1 * $num2; }}//定義總控制類 - 選擇指定的對象類class Calculation{ public static function getClassObj($type){ switch ($type) { case ‘+‘: return new CalculationAdd(); break; case ‘*‘: return new CalculationSub(); break; } }} $Calculation = Calculation::getClassObj(‘+‘);echo $Calculation->getValue(1,3); 3.簡單原廠模式 //簡單原廠模式: 即靜態原廠模式. 簡單工程模式,是通過一個靜態方法建立對象interface CreateObj{ function getValue($num1,$num2);} //加法運算類class CalculationAdd implements CreateObj{ function getValue($num1,$num2) { return $num1 + $num2; } } //乘法運算類class CalculationSub implements CreateObj{ function getValue($num1, $num2) { return $num1 * $num2; }} //運算控制類class SimpleFactory{ public static function CreateAdd() { return new CalculationAdd(); } public static function CreateSub() { return new CalculationSub(); }} $Add = SimpleFactory::CreateAdd();echo $Add->getValue(1,4)."<br/>"; $Sub = SimpleFactory::CreateSub();echo $Sub->getValue(2,3);
PHP設計模式