作用:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
优势:避免的大量的实例话,从而浪费资源,
需要把握的要点:类中只有一个实例的通道,且对外开放;构造方法必须设置为私有,防止外部直接调用(new对象都会消耗内存
);必须禁止克隆,防止直接复制;
<?php
/**
* 设计模式之单例模式
* $_instance必须声明为静态的私有变量
* 构造函数必须声明为私有,防止外部程序new类从而失去单例模式的意义
* getInstance()方法必须设置为公有的,必须调用此方法以返回实例的一个引用
**/
class
Girlfriend
{
//保存例实例在此属性中
private
static
$_instance
;
//构造函数声明为private,防止直接创建对象
private
function
__construct()
{
echo
'实例初始化了!'
;
}
//单例方法
public
static
function
getInstance()
{ var_dump(isset(self::
$_instance
));
if
(!isset(self::
$_instance
))
{
self::
$_instance
=
new
self();
}
return
self::
$_instance
;
}
//阻止用户复制对象实例
private
function
__clone()
{ trigger_error(
'禁止克隆'
,E_USER_ERROR);
}
}
使用场景:数据库连接;redis的连接;