Blogger Information
Blog 55
fans 0
comment 0
visits 50382
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP-单例模式-0907
Bean_sproul
Original
784 people have browsed it

单例模式:

即一个类只被实例化一次,当其他人对其再次实例化时,便返回第一次实例化的对象。这种模式可以极大地节约资源。典型应用于数据库类的实例化。


实例

<?php 

/**
 * 单例模式
 即一个类只被实例化一次,当其他人对其再次实例化时,便返回第一次实例化的对象。这种模式可以极大地节约资源。典型应用于数据库类的实例化。
 */

//创建一个实用的配置类
class Config
{
	/**
     * 为什么要用静态的? 因为静态属性于类的,被所有类实例所共享;
     * 为什么要能实例初始化为null? 便于检测
     */

	private static $instance = null; //默认也是null,可以省略
	
	//实例化类时,会自动调用类的构造方法,因为将构造方法设置为private属性,限制为只能在类内部实例化
	//禁止从类的外部实例化对象
	private function __construct()
    {

    }
    //克隆方法也私有化
    private function __clone()
    {

    }

	//外部仅允许通过一个公共静态方法来创建实例
	public static function getInstance()
	{
		//检测当前的类属性$Instance是否已经保存了
		if (self::$instance == null) 
		{
			self::$instance = new self();
		}

		return self::$instance;
	}
}

$obj1 = Config::getInstance;
$obj2 = Config::getInstance;
var_dump($obj1,$obj2);
var_dump($obj1 === $obj2);
 ?>

运行实例 »

点击 "运行实例" 按钮查看在线实例


Correction status:Uncorrected

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post