單例模式(Singleton):用於爲一個類生成一個惟一的對象。
最經常使用的地方是數據庫鏈接。 使用單例模式生成一個對象後,該對象能夠被其它衆多對象所使用。 數據庫
做爲對象的建立模式,單例模式確保某一個類只有一個實例,並且自行實例化並向整個系統提供這個實例,這個類稱爲單例類。測試
單例模式(singleton)有三個特色
一、一個類只能有一個實例
二、它必須自行建立這個實例
三、它必須自行向整個系統提供這個實例code
代碼示例:對象
/** * 單例類 * Singleton.class */ class Singleton { /** * 靜態成品變量 保存全局實例 */ private static $_instance = NULL; /** * 私有化默認構造方法,保證外界沒法直接實例化 */ private function __construct() { } /** * 靜態工廠方法,返還此類的惟一實例 */ public static function getInstance() { if (is_null(self::$_instance)) { self::$_instance = new Singleton(); // 或者這樣寫 // self::$_instance = new self(); } return self::$_instance; } /** * 防止用戶克隆實例 */ public function __clone(){ die('Clone is not allowed.' . E_USER_ERROR); } /** * 測試用方法 */ public function test() { echo 'Singleton Test OK!'; } } /** * 客戶端 */ class Client { /** * Main program. */ public static function main() { $instance = Singleton::getInstance(); $instance->test(); } } Client::main();
測試get
include "Singleton.class"; $test_obj = Singleton::getInstance(); $ret = $test_obj->test();