php 八大设计模式-单例模式
单例模式 记住口诀三私一公
单例模式是最常见的模式之一,在Web应用的开发中,常常用于允许在运行时为某个特定的类创建仅有一个可访问的实例。
特点
- $_instance必须声明为静态的私有变量;
- 构造函数和析构函数必须声明为私有,防止外部程序new 类从而失去单例模式的意义;
- getInstance()方法必须设置为公有的,必须调用此方法 以返回实例的一个引用;
- __clone()必须申明私有的方法,防止克隆对象;
优势
- 实例化后只得到一个对象,减少内存的开销
使用场景
只实例化一次,内部实例化,对外只有一个开放方法,只能通过调取该方法进行调取实例化对象。 比如:数据库连接
<?php
class Demo {
// 变量
private static $_instance;
// 构造函数
final private function __construct() {
}
// 获取类唯一入口
static public function getInstall() {
if( self::$_instance === null ) {
self::$_instance = new self();
}
return self::$_instance;
}
// 克隆函数
final private function __clone() {
}
// 析构函数
final private function __destruct() {
}
}
$test1 = Demo::getInstall();
$test2 = Demo::getInstall();
// 判断是否是同一个对象
if( $test1 === $test2 ) {
echo '同一个对象';
} else {
echo '不是同一个对象';
}
?>