PHP-单例模式

什么是单例模式

单例模式(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操作都会消耗系统和内存的资源。

更多内容关注个人博客:lemonlyue.github.io/

本作品采用《CC 协议》,转载必须注明作者和本文链接
lemon_lyue
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!