php单态设计模式(单例模式)实例


Posted in PHP onNovember 18, 2014

单态设计模式也叫单例模式:

1.单态设计模式含义:

单态模式的主要作用是保证在面向对象编程设计中,一个类只能有一个实例对象存在。作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统全局地提供这个实例。它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用。

2.单台模式的三个关键点:

① 需要一个保存类的唯一实例的静态成员变量;
②构造函数和克隆函数必须声明为私有的,防止外部程序new类从而失去单例模式的意义;
③必须提供一个访问这个实例的公共的静态方法(通常为getInstance方法),从而返回唯一实例的一个引用 。

<?php

class DB {

    private static $obj = null;           //声明一个私有的,静态的成员属性$obj

    private function__construct() {       //私有构造方法,只能在类的内部实例化对象

        echo "连接数据库成功<br>";

    }

    public static function getInstance() {  // 通过此静态方法才能获取本类的对象

        if(is_null(self::$obj))  //如果本类中的$obj为空,说明还没有被实例化过

            self::$obj = new self();  //实例化本类对象

            return self::$obj;  //返回本类的对象

    }

    public function query($sql) {  //执行SQL语句完成对数据库的操作

        echo $sql;

    }

}

    $db = DB::getInstance();        //只能使用静态方法getInstance()去获取DB类的对象

    $db -> query("select *from user");       //访问对象中的成员

?>
PHP 相关文章推荐
FCKeditor的安装(PHP)
Jan 13 PHP
php开启安全模式后禁用的函数集合
Jun 26 PHP
PHP 无限分类三种方式 非函数的递归调用!
Aug 26 PHP
php读取mysql乱码,用set names XXX解决的原理分享
Dec 29 PHP
推荐25款php中非常有用的类库
Sep 29 PHP
php去除字符串中空字符的常用方法小结
Mar 17 PHP
PHP实现微信网页授权开发教程
Jan 19 PHP
非常实用的php验证码类
May 15 PHP
PHP Callable强制指定回调类型的方法
Aug 30 PHP
php设计模式之适配器模式原理、用法及注意事项详解
Sep 24 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
Nov 19 PHP
phpQuery采集网页实现代码实例
Apr 02 PHP
PHP实现的简单三角形、矩形周长面积计算器分享
Nov 18 #PHP
php中ftp_chdir与ftp_cdup函数用法
Nov 18 #PHP
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
Nov 18 #PHP
一个比较不错的PHP日历类分享
Nov 18 #PHP
php集成环境xampp中apache无法启动问题解决方案
Nov 18 #PHP
PHP解析目录路径的3个函数总结
Nov 18 #PHP
PHP自定session保存路径及删除、注销与写入的方法
Nov 18 #PHP
You might like
现磨咖啡骗局!现磨咖啡=新鲜咖啡?现磨咖啡背后的猫腻你不懂!
2019/03/28 冲泡冲煮
php学习之数据类型之间的转换介绍
2011/06/09 PHP
PHP的5个安全措施小结
2012/07/17 PHP
Thinkphp中Create方法深入探究
2014/06/16 PHP
ThinkPHP删除栏目(实现批量删除栏目)
2017/06/21 PHP
推荐:极酷右键菜单
2006/11/29 Javascript
JS函数验证总结(方便js客户端输入验证)
2010/10/29 Javascript
用js替换除数字与逗号以外的所有字符的代码
2014/06/07 Javascript
AngularJS入门教程(二):AngularJS模板
2014/12/06 Javascript
jquery日历插件datepicker用法分析
2016/01/22 Javascript
javascript 用函数实现继承详解
2016/05/28 Javascript
jQuery实现文字自动横移
2017/01/08 Javascript
node.js中cluster的使用教程
2017/06/09 Javascript
微信小程序如何使用canvas二维码保存至手机相册
2019/07/15 Javascript
webpack4从0搭建组件库的实现
2020/11/29 Javascript
[02:36]DOTA2上海特锦赛 回忆电竞生涯的重要瞬间
2016/03/25 DOTA
[00:19]CN DOTA NEVER DIE!VG夺冠rOtK接受采访
2019/12/23 DOTA
python线程锁(thread)学习示例
2013/12/04 Python
Python常用模块用法分析
2014/09/08 Python
Python 实现一个颜色色值转换的小工具
2016/12/06 Python
python生成ppt的方法
2018/06/07 Python
在IPython中执行Python程序文件的示例
2018/11/01 Python
python3.4爬虫demo
2019/01/22 Python
Python类中的魔法方法之 __slots__原理解析
2019/08/26 Python
Python猴子补丁知识点总结
2020/01/05 Python
python 异步async库的使用说明
2020/05/04 Python
解决python运行效率不高的问题
2020/07/20 Python
css3中用animation的steps属性制作帧动画
2019/04/25 HTML / CSS
美国从事品牌鞋类零售的连锁店:Famous Footwear
2016/08/25 全球购物
巴西男士胡须和头发护理产品商店:Beard
2017/11/13 全球购物
工业设计专业个人求职信范文
2013/12/28 职场文书
工程采购员岗位职责
2014/03/09 职场文书
初中生庆国庆演讲稿范文2014
2014/09/25 职场文书
Jupyter Notebook 如何修改字体和大小以及更改字体样式
2021/06/03 Python
Python通过loop.run_in_executor执行同步代码 同步变为异步
2022/04/11 Python
css让页脚保持在底部位置的四种方案
2022/07/23 HTML / CSS