引言
- 意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
- 主要解决:一个全局使用的类频繁地创建与销毁。
- 何时使用:当您想控制实例数目,节省系统资源的时候。
- 如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。
- 关键代码:构造函数是私有的。
- 使用场景: 1、要求生产唯一序列号。 2、WEB 中的计数器,不用每次刷新都在数据库里加一次,用单例先缓存起来。 3、创建的一个对象需要消耗的资源过多,比如 I/O 与数据库的连接等。
代码范例
<?php
<?php
class Singleton
{
//静态变量保存全局实例
private static $_instance = null;
//私有构造函数,防止外界实例化对象
private function __construct()
{
}
//私有构造函数,防止外界实例化对象
private function __clone()
{
}
//静态方法,单例统一访问入口
static public function getInstance()
{
//全局实例已经存在,直接返回,否则new创建实例
if(is_null( self::$_instance) || isset( self::$_instance)) {
self::$_instance = new self();
}
return self::$_instance;
}
public function display()
{
echo "2333";
}
}
$obj = Singleton::getInstance();
//new Singleton(); //报错
//$obj2 = clone $obj;//报错
$obj->display();
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。