PHP-單例模式

lemon_lyue發表於2020-06-02

什麼是單例模式

單例模式(Singleton Pattern)是最簡單的設計模式之一。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。

這種模式涉及到一個單一的類,該類負責建立自己的物件,同時確保只有單個物件被建立。這個類提供了一種訪問其唯一的物件的方式,可以直接訪問,不需要例項化該類的物件。

注意:

  1. 單例類只能有一個例項。

  2. 單例類必須自己建立自己的唯一例項。

  3. 單例類必須給所有其他物件提供這一例項。

此概念引用於菜鳥教程-單例模式:

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 協議》,轉載必須註明作者和本文連結

lemon_lyue

相關文章