怎样保证一个类只要一个实例而且这个实例易于被接见呢?定义一个全局变量能够确保对象随时都能够被接见,但不能防备我们实例化多个对象。一个更好的解决办法是让类本身担任保留它的唯一实例。这个类能够保证没有其他实例被建立,而且它能够供应一个接见该实例的要领。这就是单例形式的形式效果。
比方我们在php的开辟过程当中我们建立了一个db类(数据库操纵类),那末我们愿望再一个php文件中一个数据库只被衔接一次而一个php文件中也只需要一个数据库对象!由于屡次衔接数据库会大大下降php的实行效力。也会带来极大的体系开支!
运用单例形式来封装你的数据库吧
<?php class db { //运用一个静态变量纪录db对象初始化时为null public static $db = null; /* 私有组织函数是类没法完成外部的挪用 * 意味着您将没法运用 $xx = new db(); */ private function __construct(){ echo '衔接数据库....'; } /* * 运用静态要领去猎取数据对象 * 猎取时先推断db对象是不是已存在,假如存在则直接返回db对象反正则建立这个对象 */ public static function getInstance(){ if(self::$db == null){ self::$db = new db(); } return self::$db; } public function query($sql){ echo '实行sql敕令'; } public function __destruct(){ echo '封闭数据库衔接....'; } } $db = db::getInstance(); $db1 = db::getInstance(); $db->query('test'); $db2 = db::getInstance(); //输出 : 衔接数据库....实行sql敕令封闭数据库衔接....
//能够看到不管我们猎取多少次db对象,虽然他们称号差别,但都代表着同一个对象!如许就完成单例形式!
以上就是什么是单例形式?的细致内容,更多请关注ki4网别的相干文章!