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 相关文章推荐
PHP也可以?成Shell Script
Oct 09 PHP
PHP 得到根目录的 __FILE__ 常量
Jul 23 PHP
PHP 加密解密内部算法
Apr 22 PHP
基于php权限分配的实现代码
Apr 28 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
Apr 09 PHP
php表单提交实例讲解
Nov 12 PHP
php实现异步数据调用的方法
Dec 24 PHP
php+html5+ajax实现上传图片的方法
May 14 PHP
yii2学习教程之5种内置行为类详解
Aug 03 PHP
Laravel定时任务的每秒执行代码
Oct 22 PHP
laravel中的fillable和guarded属性详解
Oct 23 PHP
Thinkphp集成抖音SDK的实现方法
Apr 28 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
php实现转换ubb代码的方法
2015/06/18 PHP
PHP利用Mysql锁解决高并发的方法
2018/09/04 PHP
Yii 实现数据加密和解密
2021/03/09 PHP
javascript时间自动刷新实现原理与步骤
2013/01/06 Javascript
jquery+css+ul模拟列表菜单具体实现思路
2013/04/15 Javascript
js数组转json并在后台对其解析具体实现
2013/11/20 Javascript
js中的onchange和onpropertychange (onchange无效的解决方法)
2014/03/08 Javascript
jQuery实现的导航条切换可显示隐藏
2014/10/22 Javascript
jQuery简单tab切换效果实现方法
2015/04/08 Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(基于jquery)
2015/11/18 Javascript
JS截取字符串实例详解
2015/11/24 Javascript
浅谈JavaScript中promise的使用
2017/01/11 Javascript
Vue.js -- 过滤器使用总结
2017/02/18 Javascript
node.js连接MongoDB数据库的2种方法教程
2017/05/17 Javascript
利用webstrom调试Vue.js单页面程序的方法教程
2017/06/06 Javascript
移动端触摸滑动插件swiper使用方法详解
2017/08/11 Javascript
使用nvm管理不同版本的node与npm的方法
2017/10/31 Javascript
p5.js入门教程之图片加载
2018/03/20 Javascript
Angular 数据请求的实现方法
2018/05/07 Javascript
js数据类型检测总结
2018/08/05 Javascript
js隐式转换的知识实例讲解
2018/09/28 Javascript
mpvue实现小程序签到金币掉落动画(api实现)
2019/10/17 Javascript
python xlsxwriter创建excel图表的方法
2018/06/11 Python
在Python中表示一个对象的方法
2019/06/25 Python
基于Python安装pyecharts所遇的问题及解决方法
2019/08/12 Python
浅谈python中统计计数的几种方法和Counter详解
2019/11/07 Python
Pytorch 实现sobel算子的卷积操作详解
2020/01/10 Python
python爬虫构建代理ip池抓取数据库的示例代码
2020/09/22 Python
美国婴儿和儿童服装购物网站:PatPat
2020/10/01 全球购物
营业员个人总结的自我评价
2013/10/25 职场文书
大学生入党自我鉴定
2013/10/31 职场文书
采购部部门职责
2013/12/15 职场文书
购房意向书
2014/04/01 职场文书
2015年质量月活动总结报告
2015/03/27 职场文书
幼儿园安全工作总结2015
2015/04/20 职场文书
Unicode中的CJK(中日韩统一表意文字)字符小结
2021/12/06 HTML / CSS