单例模式(Singleton):用于为一个类生成一个唯一的对象。
最常用的地方是数据库连接。 使用单例模式生成一个对象后,该对象可以被其它众多对象所使用。作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类。
单例模式(singleton)有三个特点
1、一个类只能有一个实例2、它必须自行创建这个实例3、它必须自行向整个系统提供这个实例代码示例:
/** * 单例类 * Singleton.class */class Singleton { /** * 静态成品变量 保存全局实例 */ private static $_instance = NULL; /** * 私有化默认构造方法,保证外界无法直接实例化 */ private function __construct() { } /** * 静态工厂方法,返还此类的唯一实例 */ public static function getInstance() { if (is_null(self::$_instance)) { self::$_instance = new Singleton(); // 或者这样写 // self::$_instance = new self(); } return self::$_instance; } /** * 防止用户克隆实例 */ public function __clone(){ die('Clone is not allowed.' . E_USER_ERROR); } /** * 测试用方法 */ public function test() { echo 'Singleton Test OK!'; } } /** * 客户端 */class Client { /** * Main program. */ public static function main() { $instance = Singleton::getInstance(); $instance->test(); }} Client::main();
测试
include "Singleton.class";$test_obj = Singleton::getInstance();$ret = $test_obj->test();