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 set_time_limit(0)长连接的实现分析
Mar 02 PHP
PHP CURL模拟GET及POST函数代码
Apr 25 PHP
PHP迅雷、快车、旋风下载专用链转换代码
Jun 15 PHP
简单的php写入数据库类代码分享
Jul 26 PHP
php操作redis中的hash和zset类型数据的方法和代码例子
Jul 05 PHP
php之readdir函数用法实例
Nov 13 PHP
PHP中require和include路径问题详解
Dec 25 PHP
PHP生成器简单实例
May 13 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
May 19 PHP
浅谈PHP检查数组中是否存在某个值 in_array 函数
Jun 13 PHP
php常用字符串查找函数strstr()与strpos()实例分析
Jun 21 PHP
PHP+Apache实现二级域名之间共享cookie的方法
Jul 24 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
SONY ICF-SW55的电路分析
2021/03/02 无线电
php header()函数使用说明
2008/07/10 PHP
php下通过伪造http头破解防盗链的代码
2010/07/03 PHP
PHP的博客ping服务代码
2012/02/04 PHP
PHP file_exists问题杂谈
2012/05/07 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
2017/06/07 PHP
YII2框架中查询生成器Query()的使用方法示例
2020/03/18 PHP
基于jquery的气泡提示效果
2010/05/31 Javascript
JS 实现图片直接下载示例代码
2013/07/22 Javascript
js判断undefined类型,undefined,null, 的区别详细解析
2013/12/16 Javascript
JS不间断向上滚动效果代码
2013/12/25 Javascript
js实现div弹出层的方法
2014/11/20 Javascript
javascript中数组的定义及使用实例
2015/01/21 Javascript
谈谈对offsetleft兼容性的理解
2015/11/11 Javascript
每天一篇javascript学习小结(Boolean对象)
2015/11/12 Javascript
iOS和Android用同一个二维码实现跳转下载链接的方法
2016/09/28 Javascript
jQuery层级选择器实例代码
2017/02/06 Javascript
CryptoJS中AES实现前后端通用加解密技术
2018/12/18 Javascript
使用vue实现一个电子签名组件的示例代码
2020/01/06 Javascript
js实现简单的秒表
2020/01/16 Javascript
CentOS 6.5中安装Python 3.6.2的方法步骤
2017/12/03 Python
Python根据文件名批量转移图片的方法
2018/10/21 Python
python远程连接MySQL数据库
2019/04/19 Python
numpy.where() 用法详解
2019/05/27 Python
Python比较配置文件的方法实例详解
2019/06/06 Python
Python eval函数原理及用法解析
2020/11/14 Python
Django2.1.7 查询数据返回json格式的实现
2020/12/29 Python
10种CSS3实现的loading动画,挑一个走吧?
2020/11/16 HTML / CSS
地球上最先进的胡子和头发修剪器:Bevel
2018/01/23 全球购物
中学教师实习自我鉴定
2013/09/28 职场文书
初一英语教学反思
2014/01/11 职场文书
环境保护与污染治理求职信
2014/07/16 职场文书
2015年学校关工委工作总结
2015/04/03 职场文书
毕业论文答辩开场白和结束语
2015/05/27 职场文书
钢铁是怎样炼成的读书笔记
2015/06/29 职场文书
React四级菜单的实现
2022/04/08 Javascript