单例模式

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

单例模式注意

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

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
37
38
39
40
41
42
43
44
/**
* 单例模式 @MR.SUI
* 单例设计模式 (单态)
定义: 一个类 只能允许有 一个对象存在.
1.不让进: 使类不能被实例化
2.留后门: 设置静态方法
3.给对象: 在静态方法里实例化该类
4.判初夜: 判断是否是 第一次产生该类的对象
5.设静态: 静态方法里 要使用静态属性
常用在需要一个对象时,避免反复new造成的资源浪费.如数据库操作.
*/
class db {

//静态变量保存全局实例
private static $_instance = null;

//私有构造函数,防止外界实例化对象
private function __construct()
{
//私有构造函数,防止外界实例化对象
}

//私有克隆函数,防止外办克隆对象
private function __clone() {
}

//静态方法,单例统一访问入口
public static function getInstance() {
if (!( self::$_instance instanceof self)) {
self::$_instance = new self();
}
return self::$_instance;
}

public function index() {
echo '666';
}

//创建__clone方法防止对象被复制克隆
public function __clone()
{
trigger_error('Clone is not allow!', E_USER_ERROR);
}
}

//静态调用得到对象

db::getInstance()->index();

纵有疾风起,人生不言弃!