设计模式之单列

先写一下self和this的区别,简单讲就是self是引用静态类的类名,而$this是引用非静态类的实例名。php

首先参考一段代码this

class Dog
{
	
}

$dog1 = new Dog();
$dog2 = new Dog();

if($dog1 === $dog2){
	echo '这是同样的';
}else{
	echo "这不是同样的";
}

必然的,会弹出这不是同样的。两次new分别建立了对象。code

再看下面对象

/**
* 单例模式
* 使用单例模式避免大量的new操做消耗资源。
* 1,构造方法私有化,private
* 2,经过静态成员变量保存对象
* 3,经过公共静态方法建立对象
*/

class Dog
{
	private function __construct()
	{

	}

	//静态属性保存单列对象
	static private $instance;
	//经过静态方法建立单列对象
	static public function getInstance()
	{
		//判断$instance是否为空,为空建立,不为空直接返回
		if (!self::$instance) {
			self::$instance = new self();
		}
		return self::$instance;
	}
}

$dog1 = Dog::getInstance();
$dog2 = Dog::getInstance();

if($dog1 === $dog2){
	echo '这是同样的';
}else{
	echo "这不是同样的";
}
相关文章
相关标签/搜索