PHP-单例模式
什么是单例模式#
单例模式(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 操作都会消耗系统和内存的资源。
更多内容关注个人博客:lemonlyue.github.io/
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: