什么是单例模式?
内容导读
收集整理的这篇技术教程文章主要介绍了什么是单例模式?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1650字,纯文字阅读大概需要3分钟。
内容图文
单例模式(Singleton pattern)是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。如何保证一个类只有一个实例并且这个实例易于被访问呢?定义一个全局变量可以确保对象随时都可以被访问,但不能防止我们实例化多个对象。一个更好的解决办法是让类自身负责保存它的唯一实例。这个类可以保证没有其他实例被创建,并且它可以提供一个访问该实例的方法。这就是单例模式的模式动机。
例如我们在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对象,虽然他们名称不同,但都代表着同一个对象!这样就实现单例模式!
以上就是什么是单例模式?的详细内容,更多请关注Gxl网其它相关文章!
内容总结
以上是为您收集整理的什么是单例模式?全部内容,希望文章能够帮你解决什么是单例模式?所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。