php设计模式-单例

单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。
《设计模式》对此的定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
单例模式有三个要点:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。
所以,针对单例模式的实现有一下几点:
一是单例模式的类只提供私有的构造函数,二是类定义中含有一个该类的静态私有对象,三是该类提供了一个静态的公有的函数用于创建或获取它本身的静态私有对象。
代码实例如下:
<?php
class sigle{
	protected static $ins = null;
	public static function getIns(){
		if(self::$ins===null){
			self::$ins = new self();
		}
		return self::$ins;
	}
	/**
	 * 封锁构造函数。
	 * protected可以防止被直接new出来
	 * final可以防止在子类中被覆盖。
	 * 如果在父类中加了protected,但是在子类中public,仍然可以直接new。
	 */
	final protected function __construct(){
	}
	final protected function __clone(){
	}
}

解析说明:

说明一:
final protected function __construct(){
protected是为了防止该类在本类中被new出来。
final是为了防止子类中覆盖被保护的构造方法,并public出去。例如:
class multi extends sigle{
public function __construct(){
 
}
}
$m = new multi();
var_dump($m);
echo '<br/>';
说明二: final protected function __clone(){}
 
首先需要解决在php中,对象复制和__clone函数的问题。

 

 

你可能感兴趣的:(php设计模式-单例)