php面向对象开发之——单例模式

php的全局变量给编程带来了很大的灵活性,但全局变量的不受约束性也带来了很大的隐患。单例模式可以很好的替代全局变量。


假设有一朵花,每个人见到都会去浇花,然后再欣赏它。


class flower{

	function __construct(){
		echo date('Y-m-d H:i:s').'浇了花';
	}
	
	public function look(){
		return '一朵美丽的花';
	}

}

$a=new flower();//将输出:2013-01-08 09:37:54浇了花
echo $a->look();//将输出:一朵美丽的花
$b=new flower();//将输出:2013-01-08 09:37:54浇了花
echo $b->look();//将输出:一朵美丽的


可见,要是人越来越多,花早晚会被淹死,我们需要的是,只要第一个看到花人浇了花便可,其他人不需要浇花。


class flower{
	
	private static $instance;

	private function __construct(){
		echo date('Y-m-d H:i:s').'浇了花';
	}
	
	public static function getInstance(){
		if(empty(self::$instance)){
			self::$instance=new self();
		}
		return self::$instance;
	}
	
	public function look(){
		return '一朵美丽的花';
	}

}

$a=flower::getInstance();//将输出:2013-01-08 09:52:43浇了花
echo $a->look();//将输出:一朵美丽的花

$b=flower::getInstance();//不会输出
echo $b->look();//将输出:一朵美丽的


单例模式适用与只需获得一个相同的实例的环境,比如说 mysql数据库的连接和其他操作。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值