php單例模式之「三私一公」

2022-05-09 08:21:12 字數 953 閱讀 7701

單例模式的概念

單例模式是指整個應用中某個類只有乙個物件例項的設計模式。具體來說,作為物件的建立方式,單例模式確保某乙個類只有乙個例項,而且自行例項化並向整個系統全域性的提供這個例項。它不會建立例項副本,而是會向單例類內部儲存的例項返回乙個引用。

單例模式的特點

單例模式的主要特點是「三私一公」:

需要乙個儲存類的唯一例項的私有靜態成員變數

建構函式必須宣告為私有的,防止外部程式new乙個物件從而失去單例的意義

轉殖函式必須宣告為私有的,防止物件被轉殖

必須提供乙個訪問這個例項的公共靜態方法(通常命名為getinstance),從而返回唯一例項的乙個引用。

使用單例模式的原因及場景

在php的大多數應用中都會存在大量的資料庫操作,如果不用單例模式,那每次都要new操作,但是每次new都會消耗大量的系統資源和記憶體資源,而且每次開啟和關閉資料庫都是對資料庫的一種極大考驗和浪費。所以單例模式經常用在資料庫操作類中。

同樣,如果系統中需要有乙個類來全域性控制某些配置資訊,那使用單例模式可以很方便的實現。

db類中的體現

<?php

classdb 

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 需要乙個儲存類的唯一例項的私有靜態...