banner
NEWS LETTER

单例模式

Scroll down

什么是单例模式

单例模式(Singleton Pattern)是最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
注意:

  1. 单例类只能有一个实例。
  2. 单例类必须自己创建自己的唯一实例。
  3. 单例类必须给所有其他对象提供这一实例。

此概念引用于菜鸟教程-单例模式:
https://www.runoob.com/design-pattern/singleton-pattern.html

单例模式的实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?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);

代码运行结果:

1
2
3
4
class Database#1 (0) {
}
class Database#1 (0) {
}

由此看出,根据对象id可知道两次获取到的$db都是同一个。

单例模式应用场景

主要应用场合就是应用程序与数据库打交道的场景,在一个应用中会存在大量的数据库操作,针对数据库句柄连接数据库的行为,使用单例模式可以避免大量的new操作。因为每一次new操作都会消耗系统和内存的资源。

其他文章
cover
Swoole
  • 23/10/02
  • 23:19
  • 316
  • 1
cover
工厂模式
  • 23/10/02
  • 23:19
  • 256
  • 1
目录导航
  1. 1. 什么是单例模式
  2. 2. 单例模式的实现
  3. 3. 单例模式应用场景
请输入关键词进行搜索