乙個類只有乙個例項物件
1、含義
作為物件的建立模式,單例模式確保某乙個類只有乙個例項,而且自行例項化並向整個系統全域性的提供這個例項。它不會建立例項副本,而是會向單例類內部儲存的例項返回乙個引用。
2、單例模式的三個要點
1)、乙個類的唯一例項的靜態成員變數:
private static $instance;
2)、建構函式和轉殖函式必須宣告為私有的,防止外部程式new類從而失去單例模式的意義:
private function __construct()
private function __clone()
3)、必須提供提供乙個訪問這個例項的公共的靜態方法(一般為getinstance方法),從而返回唯一例項的乙個引用:
public static function getinstance()
if (static::$instance == null) //或者 if (!(self::$_instance instanceof self))
static::$instance == new self();
return static::$instance;
測試demo:
<?php
class singleton
private static $instance;
private function __construct(){}
public static function getinstance()
if (static::$instance == null)
static::$instance == new singleton();
return static::$instance;
//客戶端**
$s1 = singleton::getinstance();
$s2 = singleton::getinstance();
if ($s1 == $2)
echo "same class";
總結:單例模式,保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。使用單例模式可以避免大量的new操作,因為每一次new操作都會消耗系統和記憶體的資源。
單例模式因為singleton類封裝它的唯一例項,這樣它可以嚴格的控制客戶怎樣訪問以及何時訪問它,簡單來說就是對唯一例項的受控訪問。
PHP物件導向 單例模式
單例模式 singleton pattern 單例模式 singleton pattern 是最簡單的設計模式之一。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。這種模式涉及到乙個單一的類,該類負責建立自己的物件,同時確保只有單個物件被建立。這個類提供了一種訪問其唯一的物件的方式...
Php物件導向 單例模式
php物件導向 單例模式 保證類只有乙個例項 1.如何可以解決乙個類可以被無限地例項化?new,就能例項化一次,怎麼去限制,使用者不能無限次地new?將構造方法私有化。所有外部的new都操作失敗 class mysqldb private function construct 2.一旦構造方法私有化...
php物件導向開發之 單例模式
php的全域性變數給程式設計帶來了很大的靈活性,但全域性變數的不受約束性也帶來了很大的隱患。單例模式可以很好的替代全域性變數。假設有一朵花,每個人見到都會去澆花,然後再欣賞它。class flower public function look a new flower 將輸出 2013 01 08 ...