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

相关文章
相关标签/搜索