首页 > php教程 > php教程 > 正文

什么是单例模式?

转载 2019-04-15 16:05:57 0 682
第六期线上培训班
单例模式(Singleton pattern)是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。

如何保证一个类只有一个实例并且这个实例易于被访问呢?定义一个全局变量可以确保对象随时都可以被访问,但不能防止我们实例化多个对象。一个更好的解决办法是让类自身负责保存它的唯一实例。这个类可以保证没有其他实例被创建,并且它可以提供一个访问该实例的方法。这就是单例模式的模式动机。

例如我们在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对象,虽然他们名称不同,但都代表着同一个对象!这样就实现单例模式!

以上就是什么是单例模式?的详细内容,更多请关注php中文网其它相关文章!

php中文网最新课程二维码
  • 相关标签:单例模式
  • 本文转载于:hcoder,如有侵犯,请联系删除
  • 相关文章


  • web前端如何更新缓存?单例模式封装opendatabase
  • Spring下单例模式与线程安全之间的矛盾解决
  • php单例模式的讲解(代码示例)
  • 并发中单例模式的详细介绍(附代码)
  • 什么是单例模式?
  • 网友评论

    文明上网理性发言,请遵守 新闻评论服务协议

    我要评论
    独孤九贱(5)_ThinkPHP5视频教程

    独孤九贱(5)_ThinkPHP5视频教程

    ThinkPHP是国内最流行的中文PHP开发框架,也是您Web项目的最佳选择。《php.cn独孤九贱(5)-ThinkPHP5视频教程》课程以ThinkPHP5最新版本为例,从最基本的框架常识开始,将...

    独孤九贱(4)_PHP视频教程

    独孤九贱(4)_PHP视频教程

    江湖传言:PHP是世界上最好的编程语言。真的是这样吗?这个梗究竟是从哪来的?学会本课程,你就会明白了。 PHP中文网出品的PHP入门系统教学视频,完全从初学者的角度出发,绝不玩虚的,一切以实用、有用...

    独孤九贱(1)_HTML5视频教程

    独孤九贱(1)_HTML5视频教程

    《php.cn原创html5视频教程》课程特色:php中文网原创幽默段子系列课程,以恶搞,段子为主题风格的php视频教程!轻松的教学风格,简短的教学模式,让同学们在不知不觉中,学会了HTML知识。 ...

    ThinkPHP5实战之[教学管理系统]

    ThinkPHP5实战之[教学管理系统]

    本套教程,以一个真实的学校教学管理系统为案例,手把手教会您如何在一张白纸上,从零开始,一步一步的用ThinkPHP5框架快速开发出一个商业项目。

    PHP入门视频教程之一周学会PHP

    PHP入门视频教程之一周学会PHP

    所有计算机语言的学习都要从基础开始,《PHP入门视频教程之一周学会PHP》不仅是PHP的基础部分更主要的是PHP语言的核心技术,是学习PHP必须掌握的内容,任何PHP项目的实现都离不开这部分的内容,通...

    作者信息

    藏色散人

    好好学习天天向上!

    最近文章
    php dir()函数的使用详解 818
    使用memcache来保存session 539
    PHP如何操作Memcache缓存? 861

    相关视频教程

  • 设计模式 设计模式
  • 布尔教育设计模式视频教程 布尔教育设计模式视频教程
  • php高级设计模式视频教程 php高级设计模式视频教程
  • PHP高级设计模式视频教程 PHP高级设计模式视频教程
  • 相关视频章节

    第六期线上培训班