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 htmlentities和htmlspecialchars 的区别
Aug 18 PHP
jQuery EasyUI API 中文文档 - DateBox日期框
Oct 15 PHP
PHP代码保护--Zend Guard的使用详解
Jun 03 PHP
解析web文件操作常见安全漏洞(目录、文件名检测漏洞)
Jun 29 PHP
PHP时间戳 strtotime()使用方法和技巧
Oct 29 PHP
PHP实现自动登入google play下载app report的方法
Sep 23 PHP
PHP+jQuery 注册模块的改进(三):更新到Smarty3.1
Oct 14 PHP
PHP中round()函数对浮点数进行四舍五入的方法
Nov 19 PHP
php简单获取文件扩展名的方法
Mar 24 PHP
非集成环境的php运行环境(Apache配置、Mysql)搭建安装图文教程
Apr 12 PHP
thinkPHP模板中for循环与switch语句用法示例
Nov 30 PHP
PHP CURL与java http使用方法详解
Jan 26 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
dhtmlxTree目录树增加右键菜单以及拖拽排序的实现方法
2013/04/26 PHP
PHP 应用容器化以及部署方法
2018/02/12 PHP
JavaScript 学习笔记(六)
2009/12/31 Javascript
javascript闭包的高级使用方法实例
2013/07/04 Javascript
在js文件中如何获取basePath处理js路径问题
2013/07/10 Javascript
基于jQuery实现表单提交验证
2014/11/24 Javascript
学习JavaScript鼠标响应事件
2015/12/25 Javascript
JS Array创建及concat()split()slice()的使用方法
2016/06/03 Javascript
JS匿名函数实例分析
2016/11/26 Javascript
详解webpack+es6+angular1.x项目构建
2017/05/02 Javascript
Nodejs异步回调之异常处理实例分析
2018/06/22 NodeJs
详解ES6中的三种异步解决方案
2018/06/28 Javascript
Vue一次性简洁明了引入所有公共组件的方法
2018/11/28 Javascript
解决微信小程序调用moveToLocation失效问题【超简单】
2019/04/12 Javascript
Vue注册组件命名时不能用大写的原因浅析
2019/04/25 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
2019/05/01 Javascript
Vue项目服务器部署之子目录部署方法
2019/05/12 Javascript
layui 解决form表单点击无反应的问题
2019/10/25 Javascript
基于JavaScript实现单例模式
2019/10/30 Javascript
如何在vue中使用kindeditor富文本编辑器
2020/12/19 Vue.js
简单介绍Python2.x版本中的cmp()方法的使用
2015/05/20 Python
如何在Python函数执行前后增加额外的行为
2016/10/20 Python
浅谈Python2.6和Python3.0中八进制数字表示的区别
2017/04/28 Python
python网络爬虫之如何伪装逃过反爬虫程序的方法
2017/11/23 Python
Python字符串的常见操作实例小结
2019/04/08 Python
Python闭包和装饰器用法实例详解
2019/05/22 Python
如何理解python对象
2020/06/21 Python
H&M旗下高端女装品牌:& Other Stories
2018/05/07 全球购物
New Balance法国官方网站:购买鞋子和服装
2019/09/01 全球购物
工商管理实习自我鉴定
2013/09/28 职场文书
行政部工作岗位职责范本
2014/03/05 职场文书
中式婚礼主持词
2014/03/13 职场文书
大学生志愿者活动总结
2014/06/27 职场文书
工作汇报开头与结尾怎么写
2014/11/08 职场文书
学校国庆节活动总结
2015/03/23 职场文书
python运算符之与用户交互
2022/04/13 Python