作為對象的創建模式,單例模式確保某一個類只有一個實例,而且自行實例化并向整個系統全局地提供這個實例,它不會創建實例副本,而是會向單例類內部存儲的實例返回一個引用.
單例模式的特點:
1、構造函數需要標記為private(訪問控制:防止外部代碼使用new操作符創建對象),單例類不能在其他類中實例化,只能被其自身實例化;
2、擁有一個保存類的實例的靜態成員變量
3、擁有一個訪問這個實例的公共的靜態方法(常用getInstance()方法進行實例化單例類,通過instanceof操作符可以檢測到類是否已經被實例化)
另外,需要創建__clone()方法防止對象被復制(克?。?/p>
DEMO(鏈接數據庫):代碼如下:
- /* 例子:數據庫連接職責的集中控制 */
- class Database {
- private $_db;
- static $_instance;
- private function __construct() {
- $this->_db = pg_connect('dbname=example_db');
- }
- private __clone() {};
- public static function getInstance() {
- if(! (self::$_instance instanceof self) )
- {
- self::$_instance = new self();
- }
- return self::$_instance;
- }
- public function query($sql) {
- // 使用 $this->_db 執行一個查詢
- return pg_query($this->_db, $sql);
- }
- }
新聞熱點
疑難解答