PHP設計模式 單例模式

2021-07-22 05:13:04 字數 1248 閱讀 1826

單例模式的必要性:

1. 目的:確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。

2. 要點:

1). 某乙個類只能有乙個例項;

2). 必須自行建立這個例項;

3). 必須自行向整個系統提供這個例項。

3. 作用:避免重複例項化,節省系統資源。例如在資料庫操作方面,會大量存在資料庫連線操作,單例類可以避免多次連線資料庫而消耗資源,減輕對資料庫伺服器的壓力。

單例類的寫法:三私一公二靜態

1、私有的構造方法:防止類外被例項化,從而失去單例的意義。

2、私有轉殖方法:防止傳到類外的物件被轉殖,從而無法保證物件的唯一。

3、私有靜態的屬性:私有的目的是防止這個屬性在類外被修改。用來儲存在本類中生成的唯一乙個例項。 靜態的目的是什麼呢?之所以靜態,是因為該屬性要被在靜態方法中呼叫。

4、共有的靜態方法:這個方法是唯一將例項傳輸到類外使用的途徑。子所以是公有的,是因為要被在類外呼叫。之所以靜態,是因為單例類中的構造方法是私有的,沒辦法用物件呼叫該方法,而只有靜態方法才不需要物件呼叫。

這個公有的靜態方法必須有返回值,將當前類中私有靜態屬性返回。而這個靜態屬性中已經儲存了那個唯一的例項化後的物件。

備註:單例模式強調類的靜態呼叫,保證乙個程序對乙個類的多次呼叫只產生乙個物件。

案例   ---    連線資料庫單例類

class dbconn   

private function __clone(){}

public static function getinstance()

return self::$_instance;

} }

/*** 單例模式資料庫連線專案例項*/

class dbconn  else   

} else

} //私有化,禁止轉殖這個物件

private function __clone() {}

//這個方法是為了獲取一次例項,也就是一次資料庫連線物件。

//必須通過此方法得到物件的引用 這個類用了單例模式的寫法

public static function getinstance()

return self::$_instance;

}

php設計模式 單例模式

靜態方法所訪問的屬性也必須是static的。靜態方法呼叫靜態變數使用方式是self 靜態變數名 靜態方法呼叫靜態方法使用方式是self 靜態方法名 類的例項可以訪問靜態方法,但不可以訪問靜態變數 package name subpackage name category name author ad...

PHP設計模式 單例模式

單例模式就是保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。通常我們可以讓乙個全域性變數使得乙個物件被訪問,但是不能防止你例項化多個變數,乙個最好的辦法就是讓類自身負責儲存它的唯一例項,這個類可以保證沒有其它例項可被建立,並且他可以提供乙個訪問該例項的方法。下面提供兩種單例模式的例子 例1 ...

php設計模式 單例模式

php 單例模式 單例類基本構成元素 1.必須擁有乙個private的建構函式 防止外部例項化 2.乙個儲存例項的靜態變數 只例項化一次 3.乙個訪問例項的靜態公共方法 建立例項 class singleton 使用者外部獲取例項 public static function getinstance...