重点是:
1/ 一个类只有一个对象
2/ 类为自行创建,不能通过new来声明
3/ 用途:在整个系统中统一提供这一个对象。
写法:
1/ 类中定义一个私有静态变量
2/ 类中只提供私有的构造函数
3/ 提供一个静态公有函数用来创建私有对象本身。
4/ 使用__clone防止克隆
<?php//学习使用单例模式class Danli{ ???private static $db = null; ???private static $num = 0; ???private function __construct() ???{ ???????echo "对象已经构建完成:".self::$num."次\n"; ???} ???public static function getInstance() ???{ ???????if(self::$db instanceof self){ ???????????echo "已经实例化,不要重复实例\n"; ???????????return self::$db; ???????}else{ ???????????self::$num +=1; ???????????return ?self::$db = new self(); ???????} ???} ???static function test() ???{ ???????echo "调用成功\n"; ???} ???public function __clone() ???{ ???????echo "不能克隆哦"; ???}}$d = Danli::getInstance();$d->test();$c = Danli::getInstance();$c->test();$d= clone $c;//
php 模式设计之单例模式
原文地址:http://blog.51cto.com/13833231/2133133