1 <?php 2 3 class User { 4 5 //静态变量保存全局变量 6 private static $_instance=null; 7 8 //私有化构造函数,防止外界实例化对象 9 private function __construct() { 10 } 11 12 //私有化克隆,防止外界克隆对象 13 private function __clone(){ 14 15 } 16 //静态方法,单例统一访问接口 17 static public function getInstance(){ 18 if(is_null(self::$_instance)||isset(self::$_instance)){ 19 self::$_instance= new self(); 20 } 21 22 return self::$_instance; 23 } 24 25 public function getName(){ 26 echo "猪八戒"; 27 } 28 } 29 30 31 32 header("Content-type:text/html;charset=utf-8"); 33 $user=User::getInstance(); 34 echo $user->getName();
单例模式的优缺点:
优点:
1. 改进系统的设计
2. 是对全局变量的一种改进
缺点:
1. 难于调试
2. 隐藏的依赖关系
3. 无法用错误类型的数据覆写一个单例