php設計模式之實現單例模式(singleton)

單例模式(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();
相關文章
相關標籤/搜索