三种常见单例模式实现

下面列举了三种: 懒汉式 饿汉式 登记式

懒汉式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Singleton
{
private static $instance = null;

private function __construct() { }
private function __clone() {}

public static function getInstance() : Singleton
{
if (self::$instance === null) {
self::$instance = new self();
}
return self::$instance;
}
}

饿汉式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
* php中是不允许这样的,这里只做示例使用
*/
class Singleton
{
private static $instance = new Singleton();

private function __construct() { }
private function __clone() {}

public static function getInstance() : Singleton
{
return self::$instance;
}
}

登记式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
* php中是不允许的这样的,这里只做示例使用
*/
class Singleton
{
private static $instance = null;

private function __construct() { }
private function __clone() {}

private static class Holder
{
private static final Singleton SINGLETON = new Singleton();
}

public static function getInstance() : Singleton
{
return Holder.SINGLETON;
}
}
-------------本文结束感谢您的阅读-------------