单例模式(Singleton):用于为一个类生成一个惟一的对象。
最经常使用的地方是数据库链接。 使用单例模式生成一个对象后,该对象能够被其它众多对象所使用。 数据库
做为对象的建立模式,单例模式确保某一个类只有一个实例,并且自行实例化并向整个系统提供这个实例,这个类称为单例类。测试
单例模式(singleton)有三个特色
一、一个类只能有一个实例
二、它必须自行建立这个实例
三、它必须自行向整个系统提供这个实例code
代码示例:对象
/** * 单例类 * 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();
测试get
include "Singleton.class"; $test_obj = Singleton::getInstance(); $ret = $test_obj->test();