PHP設計模式(六): 單例模式

💍 單例模式

 

  • 現實生活示例

 

一個國家同一時間只能有一位總統。只要使命召喚,這個總統就必須採起行動。 這裏的總統就是一個單例。編程

 

  • 概述

 

確保特定類的對象只被建立一次。設計模式

 

  • 維基百科

 

在軟件工程中,單例模式是一種軟件設計模式,用來限制類初始化爲對象。當偏偏只須要一個對象來協調整個系統的功能時,單例模式很是有用。ide

 

實際上,單例模式被認爲是反模式,應該避免過分使用。 單例模式並不是很差,可能有時候頗有用,但應謹慎使用,由於它在你的應用程序中引入了全局狀態,一處更改可能會影響其餘地方,而且可能會變得很難調試。 另外很差的一點是單例模式會使代碼緊耦合,單例也很難mock。函數

 

  • 編程示例

 

要建立一個單例,須要將構造函數設爲 private,禁用克隆,禁用擴展名,並建立靜態變量來容納實例spa

 

final class President設計

{調試

    private static $instance;對象

 

    private function __construct()get

    {io

        // Hide the constructor

    }

 

    public static function getInstance(): President

    {

        if (!self::$instance) {

            self::$instance = new self();

        }

 

        return self::$instance;

    }

 

    private function __clone()

    {

        // Disable cloning

    }

 

    private function __wakeup()

    {

        // Disable unserialize

    }

}

 

  • 這樣使用

 

$president1 = President::getInstance();

$president2 = President::getInstance();

 

var_dump($president1 === $president2); // true

相關文章
相關標籤/搜索