php开发模式之单例模式定义

单例模式类必要的三大元素:

1、必须拥有一个保存类的实例的静态成员变量。

2、必须拥有一个构造函数,访问级别必须是private(私有的)。

3、必须拥有一个访问类的实例的公共的静态方法,通常被命名为getInstance()

4、包含一个魔术方法__clone(),方式对象被复制或克隆。

单例模式类特点:

1、不能直接实例化。

2、只能被自身实例化。

单例模式类定义方法:

/***********************************
 * 单例模式 类声明方法
 ***********************************
 *@example 
 *$db = Singleton::getInstance();
 *$db->query('SELECT * FROM example_table');
 */
class SingletonClass {
	
	/**
	 * -------------------------------
	 * 例子 
	 * -------------------------------
	 * @var unknown_type
	 * 非必须
	 */
//	private $_db;
	
	/**
	 * ----------------------------
	 * 保存实例的静态属性
	 * ----------------------------
	 * 必须 包含一个类静态属性,保存类的示例
	 * @var object
	 * @access private
	 */
	private static $_instance;
	
	/**
	 * ----------------------------
	 * 构造函数
	 * ----------------------------
	 * 必须 有一个私有的构造方法,防止外部new实例化
	 * @access private
	 */
	private function __construct(){
//		$this->_db = pg_content('dbname=example_db');//例子
	}
	//------------------------------------------------------
	
	/**
	 * ----------------------------
	 * 魔术方法
	 * ----------------------------
	 * 必须包含一个私有的__clone()方法,防止类实例复制
	 */
	private function __clone(){}
	//------------------------------------------------------
	
	/**
	 * ----------------------------
	 * 获取单例类的实例
	 * ----------------------------
	 * 必须 包含一个静态获取实例的方法
	 */
	public static function getInstance(){
		//判断是否已经实例化
		if(!self::$_instance instanceof self){
			self::$_instance = new self();
		}
		return self::$_instance;
	}
	//------------------------------------------------------
	
	/**
	 * ----------------------------
	 * 例子 数据库连接就是个典型的单例模式
	 * ----------------------------
	 * 非必须
	 */
//	public function query($sql){
//		return pg_query($this->_db,$sql);
//	}
	
	/**
	 * ----------------------------
	 * 其他自定义的方法
	 * ----------------------------
	 * 非必须
	 */
//	public function functionName(){
//		//do somethings!
//	}
}


你可能感兴趣的:(php开发模式之单例模式定义)