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!
//	}
}

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值