国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

PHP 單例模式

2019-11-11 01:50:55
字體:
來源:轉載
供稿:網友

一、什么是單例模式?

1、含義   

   作為對象的創建模式,單例模式確保某一個類只有一個實例,而且自行實例化并向整個系統全局地提供這個實例。它不會創建實例副本,而是會向單例類內部存儲的實例返回一個引用。

2、單例模式的三個要點:

(1). 需要一個保存類的唯一實例的靜態成員變量:

[php] view plain copy  PRivate static $_instance;   

(2). 構造函數和克隆函數必須聲明為私有的,防止外部程序new類從而失去單例模式的意義:

[php] view plain copy  private function __construct()   {       $this->_db = pg_connect('xxxx');  }   private function __clone()  {  }//覆蓋__clone()方法,禁止克隆     

(3). 必須提供一個訪問這個實例的公共的靜態方法(通常為getInstance方法),從而返回唯一實例的一個引用 

[php] view plain copy  public static function getInstance()    {        if(! (self::$_instance instanceof self) )       {            self::$_instance = new self();        }      return self::$_instance;      }   

單例模式按字面來看就是某一個類只有一個實例,這樣做的好處還是很大的,比如說數據庫的連接,我們只需要實例化一次,不需要每次都去new了,這樣極大的降低了資源的耗費。

單例類至少擁有以下三種公共元素:

    必須擁有一個構造函數,并且必須被標記為private。    擁有一個保存類的實例的靜態成員變量。    擁有一個訪問這個實例的公共的靜態方法

具體使用方面,我在下面php實例中注釋的很清楚:

<?php	/**	 * by www.phpddt.com	 */	class MySQL{		//該屬性用來保存實例		private static $conn;		//構造函數為private,防止創建對象		private function __construct(){			$this->conn = mysql_connect('localhost','root','');		}		//創建一個用來實例化對象的方法		public static function getInstance(){			if(!(self::$conn instanceof self)){				self::$conn = new self;			}			return self::$conn;		}		//防止對象被復制		public function __clone(){			trigger_error('Clone is not allowed !');		}			}	//只能這樣取得實例,不能new 和 clone	$mysql = Mysql::getInstance();?>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 那曲县| 平远县| 抚顺县| 咸宁市| 苍南县| 峡江县| 峨眉山市| 新安县| 双桥区| 鲁甸县| 芮城县| 邢台市| 合水县| 静安区| 右玉县| 峨边| 宁阳县| 通海县| 临西县| 姜堰市| 六枝特区| 梨树县| 班戈县| 黑水县| 甘洛县| 五大连池市| 澜沧| 石家庄市| 南靖县| 陇西县| 南安市| 巴南区| 高唐县| 湘西| 高州市| 新昌县| 北宁市| 滨州市| 靖西县| 凤凰县| 扎囊县|