单例模式 记住口诀三私一公
单例模式是最常见的模式之一,在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 '不是同一个对象'; } ?>