PHP 单例模式

本文详细解析了单例模式在面向对象开发中的应用,阐述其避免资源浪费、控制配置的特性,并介绍了如何通过私有构造函数和静态实例保证模式实现。实例演示了如何在Singleton类中正确运用单例模式并确保对象唯一性。
摘要由CSDN通过智能技术生成

单例模式      

        在使用面向对象的方式开发时,使用单例模式可以避免过多的new操作消耗大量的资源。单例模式可以通过一个类来全局控制某些配置信息。

        单例模式有以下特点:

  1. 只能有一个实例。
  2. 必须自行创建这个实例。
  3.  必须给其他对象提供这一实例。

        所以在单例模式中

  1. 构造函数和析构函数必须声明为私有,防止外部程序new类从而失去单例模式的意义
  2. _clone方式必须声明为私有,防止克隆对象
class Singleton{
	private $name;//声明私有的实例变量
	private function __constuct(){//声明私有构造函数

	}
	static public $instance;//声明静态变量(保存在类中的唯一实例)
	static public function getInstance(){
		if(!self::$instance){
			self::$instance=new self();
		}
		return self::$instance;
	}

	public function setName($n){
		$this->name=$n;
	}

	public function getName(){
		return $this->name;
	}
}

$a = Singleton::getInstance();
$a->setName('abc ');
echo $a->getName(), PHP_EOL;//输出 abc
$b = Singleton::getInstance();
$b->setName('efg'); 
echo $b->getName(), PHP_EOL;//输出 efg
echo $a->getName(), PHP_EOL;//输出 efg

if($a==$b){
    echo "相同对象", PHP_EOL;//输出相同对象
}

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值