单例类
单例类至少用友以下三种公共元素
- 它们必须拥有一个构造函数,并且必须修饰为private。
- 它们拥有一个保存类的实例的静态成员变量。
- 它们拥有一个访问这个实例的公共的静态方法。
单例类不能在其他类中直接实例化。只能被其自身实例化。
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。要让单例类起作用,就必须使其为其它类提供一个实例,用它调用各种方法。单例类不会创建实例副本,而是会想单例类内部存储的实例返回一个引用。结果是单例类不会重复占用内存和系统资源,从而让应用程序的其它部分更好地使用这些资源。作为这一模式的一部分,必须创建一个空的私有的__clone()方法,以防止对象被复制或者克隆。
返回实例引用的方法通常命名为getInstance()。这个方法必须是静态的,而且如果它还没有实例化,就必须进行实例化。getInstance()方法通过使用instanceof操作符和self关键词,可以检测到类是否已经被实例化。
class Database{ private $_db; static $_instance; //放该类的实例 private function __construct(){ $this->_db=pg_connect('dbname=example_db'); } private function __clone(){} public static function getInstance(){ if(!(self::$_instance instanceof self)){ self::$_instance = new self(); // }else{ } return self::$_instance; } public function query(){ //使用 } } $db=Database::getInstance(); $db->query('select * from table');

更多精彩