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合并数组+与array_merge的区别分析
Aug 01 PHP
php对大文件进行读取操作的实现代码
Jan 23 PHP
php读取mysql的简单实例
Jan 15 PHP
PHP5.2下preg_replace函数的问题
May 08 PHP
使用PHPCMS搭建wap手机网站
Sep 20 PHP
又十个超级有用的PHP代码片段
Sep 24 PHP
在Mac OS上搭建Nginx+PHP+MySQL开发环境的教程
Dec 21 PHP
PHP请求Socket接口测试实例
Aug 12 PHP
利用PHP判断文件是否为图片的方法总结
Jan 06 PHP
Yii2实现跨mysql数据库关联查询排序功能代码
Feb 10 PHP
php mysql_list_dbs()函数用法示例
Mar 29 PHP
php远程请求CURL案例(爬虫、保存登录状态)
Apr 01 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如何透过ODBC来存取数据库
2006/10/09 PHP
在windows iis5下安装php4.0+mysql之我见
2006/10/09 PHP
开发跨浏览器javascript常见注意事项
2009/01/01 Javascript
javascript 极速 隐藏/显示万行表格列只需 60毫秒
2009/03/28 Javascript
jQuery 核心函数以及jQuery对象
2010/03/23 Javascript
JQUERY1.6 使用方法四 检测浏览器
2011/11/23 Javascript
JS 修改URL参数(实现代码)
2013/07/08 Javascript
jQuery异步上传文件插件ajaxFileUpload详细介绍
2015/05/19 Javascript
JavaScript实现的简单拖拽效果
2015/06/01 Javascript
JavaScript实现给按钮加上双重动作的方法
2015/08/14 Javascript
jQuery 自定义下拉框(DropDown)附源码下载
2016/07/22 Javascript
Angular ng-class详解及实例代码
2016/09/19 Javascript
jquery动态添加文本并获取值的方法
2016/10/12 Javascript
整理关于Bootstrap排版的慕课笔记
2017/03/29 Javascript
ES6新特性之变量和字符串用法示例
2017/04/01 Javascript
angularJS开发注意事项
2018/05/26 Javascript
Vue绑定内联样式问题
2018/10/17 Javascript
ES6中new Function()语法及应用实例分析
2020/02/19 Javascript
vue 实现用户登录方式的切换功能
2020/04/14 Javascript
Element Collapse 折叠面板的使用方法
2020/07/26 Javascript
[01:01]2020完美高校联赛(秋)西安落幕
2021/03/11 DOTA
Python 2与Python 3版本和编码的对比
2017/02/14 Python
Python Flask框架扩展操作示例
2019/05/03 Python
python实现坦克大战游戏 附详细注释
2020/03/27 Python
python对绑定事件的鼠标、按键的判断实例
2019/07/17 Python
Python assert关键字原理及实例解析
2019/12/13 Python
使用Python脚本从文件读取数据代码实例
2020/01/19 Python
AmazeUI中模态框的实现
2020/08/19 HTML / CSS
个人承诺书
2014/03/26 职场文书
小学国旗下的演讲稿
2014/08/28 职场文书
信仰心得体会
2014/09/05 职场文书
2014小学二年级班主任工作总结
2014/12/05 职场文书
2016年六一文艺汇演开幕词
2016/03/04 职场文书
Nginx配置SSL证书出错解决方案
2021/03/31 Servers
详解TS数字分隔符和更严格的类属性检查
2021/05/06 Javascript
Android Flutter实现3D动画效果示例详解
2022/04/07 Java/Android