什麼是單例模式
單例模式(Singleton Pattern)是最簡單的設計模式之一。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。
這種模式涉及到一個單一的類,該類負責建立自己的物件,同時確保只有單個物件被建立。這個類提供了一種訪問其唯一的物件的方式,可以直接訪問,不需要例項化該類的物件。
注意:
單例類只能有一個例項。
單例類必須自己建立自己的唯一例項。
單例類必須給所有其他物件提供這一例項。
此概念引用於菜鳥教程-單例模式:
www.runoob.com/design-pattern/sing...
單例模式的實現
<?php
class Database
{
/**
* @var Database
*/
private static $db;
/**
* 將構造方法設為私有,不允許new
* Database constructor.
*/
private function __construct()
{
}
/**
* 單例模式
* @return Database
*/
public static function getInstance (): \Database
{
// 判斷是否存在該變數
if (!self::$db) {
self::$db = new self();
}
return self::$db;
}
}
$db = Database::getInstance();
$db1 = Database::getInstance();
var_dump($db, $db1);
程式碼執行結果:
E:\php_project\設計模式\Lemon_lyue\Database.php:32:
class Database#1 (0) {
}
E:\php_project\設計模式\Lemon_lyue\Database.php:32:
class Database#1 (0) {
}
由此看出,根據物件id可知道兩次獲取到的$db
都是同一個。
單例模式應用場景
主要應用場合就是應用程式與資料庫打交道的場景,在一個應用中會存在大量的資料庫操作,針對資料庫控制程式碼連線資料庫的行為,使用單例模式可以避免大量的new操作。因為每一次new操作都會消耗系統和記憶體的資源。
本作品採用《CC 協議》,轉載必須註明作者和本文連結