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中配置文件操作 如config.php文件的读取修改等操作
Jul 07 PHP
PHP static局部静态变量和全局静态变量总结
Mar 02 PHP
实例介绍PHP的Reflection反射机制
Aug 05 PHP
php之readdir函数用法实例
Nov 13 PHP
CentOS下PHP安装Oracle扩展
Feb 15 PHP
php使用正则表达式进行字符串搜索的方法
Mar 23 PHP
php输出全球各个时区列表的方法
Mar 31 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
Dec 22 PHP
关于php中一些字符串总结
May 05 PHP
一波PHP中cURL库的常见用法代码示例
May 06 PHP
laravel 判断查询数据库返回值的例子
Oct 11 PHP
Laravel5.5 动态切换多语言的操作方式
Oct 25 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的session数据存储到数据库中的代码实例
2016/06/24 PHP
PHP实现将标点符号正则替换为空格的方法
2017/08/09 PHP
JavaScript 盒模型 尺寸深入理解
2012/12/31 Javascript
点击页面其它地方隐藏该div的两种思路
2013/11/18 Javascript
JavaScript控制网页层收起和展开效果的方法
2015/04/15 Javascript
js实现浏览器倒计时跳转页面效果
2016/08/12 Javascript
Bootstrap源码解读导航(6)
2016/12/23 Javascript
easyUI实现类似搜索框关键词自动提示功能示例代码
2016/12/27 Javascript
微信小程序图片自适应支持多图实例详解
2017/06/21 Javascript
基于jQuery选择器之表单对象属性筛选选择器的实例
2017/09/19 jQuery
浅谈Vuex@2.3.0 中的 state 支持函数申明
2017/11/22 Javascript
微信小程序使用input组件实现密码框功能【附源码下载】
2017/12/11 Javascript
vue项目搭建以及全家桶的使用详细教程(小结)
2018/12/19 Javascript
vue input实现点击按钮文字增删功能示例
2019/01/29 Javascript
jQuery实现轮播图源码
2019/10/23 jQuery
vue 查看dist文件里的结构(多种方式)
2020/01/17 Javascript
ES6箭头函数和扩展实例分析
2020/05/23 Javascript
Python中IPYTHON入门实例
2015/05/11 Python
Python socket网络编程TCP/IP服务器与客户端通信
2017/01/05 Python
Python虚拟环境virtualenv的安装与使用详解
2017/05/28 Python
python的Crypto模块实现AES加密实例代码
2018/01/22 Python
Python访问MongoDB,并且转换成Dataframe的方法
2018/10/15 Python
python文件和文件夹复制函数
2020/02/07 Python
python如何通过闭包实现计算器的功能
2020/02/22 Python
Pytorch 使用 nii数据做输入数据的操作
2020/05/26 Python
世界上最大的折扣香水店:FragranceNet.com
2016/10/26 全球购物
Swanson中国官网:美国斯旺森健康产品公司
2021/03/01 全球购物
Java语言程序设计测试题判断题部分
2013/01/06 面试题
物业管理计划书
2014/01/10 职场文书
公司成立感言
2014/01/11 职场文书
法人代表授权委托书
2014/04/08 职场文书
写得不错的求职信范文
2014/07/11 职场文书
三方股份合作协议书
2014/10/13 职场文书
应届毕业生的自我评价
2019/06/21 职场文书
PHP控制循环操作的时间
2021/04/01 PHP
浅谈怎么给Python添加类型标注
2021/06/08 Python