單例模式的概念
單例模式是指整個應用中某個類只有乙個物件例項的設計模式。具體來說,作為物件的建立方式,單例模式確保某乙個類只有乙個例項,而且自行例項化並向整個系統全域性的提供這個例項。它不會建立例項副本,而是會向單例類內部儲存的例項返回乙個引用。
單例模式的特點
單例模式的主要特點是「三私一公」:
需要乙個儲存類的唯一例項的私有靜態成員變數
建構函式必須宣告為私有的,防止外部程式new乙個物件從而失去單例的意義
轉殖函式必須宣告為私有的,防止物件被轉殖
必須提供乙個訪問這個例項的公共靜態方法(通常命名為getinstance),從而返回唯一例項的乙個引用。
使用單例模式的原因及場景
在php的大多數應用中都會存在大量的資料庫操作,如果不用單例模式,那每次都要new操作,但是每次new都會消耗大量的系統資源和記憶體資源,而且每次開啟和關閉資料庫都是對資料庫的一種極大考驗和浪費。所以單例模式經常用在資料庫操作類中。
同樣,如果系統中需要有乙個類來全域性控制某些配置資訊,那使用單例模式可以很方便的實現。
db類中的體現
<?phpclassdb
private
function
__clone() //
訪問例項的公共靜態方法
public
static
function
getinstance()
//或者if(self::$_instance===null)
return self::$_instance; }
public
function
fetchall()
public
function
fetchrow() }
//類外部獲取例項的引用
$db=db::getinstance();
?>
PHP單例模式 三私一公
注意 1.外部不可以例項化,因此內部例項化函式的型別必須為靜態,在類未例項化之前就已經初始化 2.靜態函式只能訪問靜態變數,所以定義private static instance 3.靜態變數的訪問寫法為 類名 變數名,在類內部可以直接寫self instance 4.可以用instanceof這個...
PHP單例模式 三私一公
php設計模式之一,單例模式,顧名思義就是只有乙個例項。單例模式確保某乙個類只有乙個例項,不能重複例項,只能它自己例項化,而且向整個系統提供這個例項。三私一公 私有化靜態屬性,私有化構造方法,私有化轉殖方法,公有化靜態方法。單例模式 即乙個類只被例項化一次,當其他人對其再次例項化時,返回第一次例項化...
PHP單例模式 三私一公
單例模式是指整個應用中某個類只有乙個物件例項的設計模式。具體來說,作為物件的建立方式,單例模式確保某乙個類只有乙個例項,而且自行例項化並向整個系統全域性的提供這個例項。它不會建立例項副本,而是會向單例類內部儲存的例項返回乙個引用。單例模式的主要特點是 三私一公 1 需要乙個儲存類的唯一例項的私有靜態...