如何保证一个类只有一个实例并且这个实例易于被访问呢?定义一个html' target='_blank'>全局变量可以确保对象随时都可以被访问,但不能防止我们实例化多个对象。一个更好的解决办法是让类自身负责保存它的唯一实例。这个类可以保证没有其他实例被创建,并且它可以提供一个访问该实例的方法。这就是单例模式的模式动机。
例如我们在php的开发过程中我们创建了一个db类(数据库操作类),那么我们希望再一个php文件中一个数据库只被连接一次而一个php文件中也只需要一个数据库对象!因为多次连接数据库会大大降低php的执行效率。也会带来极大的系统开销!
使用单例模式来封装你的数据库吧
?phpclass db//使用一个静态变量记录db对象初始化时为nullpublic 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对象,虽然他们名称不同,但都代表着同一个对象!这样就实现单例模式!
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答