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函数)
Oct 09 PHP
带密匙的php加密解密示例分享
Jan 29 PHP
Laravel 5 框架入门(一)
Apr 09 PHP
PHP实现在线阅读PDF文件的方法
Jun 23 PHP
2款PHP无限级分类实例代码
Nov 11 PHP
php有效防止图片盗用、盗链的两种方法
Nov 01 PHP
PHP实现按之字形顺序打印二叉树的方法
Jan 16 PHP
详解php curl带有csrf-token验证模拟提交方法
Apr 18 PHP
PHP实现Huffman编码/解码的示例代码
Apr 20 PHP
PHP实现通过文本文件统计页面访问量功能示例
Feb 13 PHP
laravel邮件发送的实现代码示例
Jan 31 PHP
PHP安全之register_globals的on和off的区别
Jul 23 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 程式大小
2006/12/06 PHP
php下HTTP Response中的Chunked编码实现方法
2008/11/19 PHP
Codeigniter生成Excel文档的简单方法
2014/06/12 PHP
php ImageMagick windows下安装教程
2015/01/26 PHP
php生成唯一的订单函数分享
2015/02/02 PHP
php阿拉伯数字转中文人民币大写
2015/12/21 PHP
PHP7数组的底层实现示例
2019/08/25 PHP
laravel 出现command not found问题的解决方案
2019/10/23 PHP
Jquery Ajax学习实例4 向WebService发出请求,返回实体对象的异步调用
2010/03/16 Javascript
使用Node.js实现一个简单的FastCGI服务器实例
2014/06/09 Javascript
Vue.js中数组变动的检测详解
2016/10/12 Javascript
利用jquery去掉时光轴头尾部线条的方法实例
2017/06/16 jQuery
详解如何去除vue项目中的#——History模式
2017/10/13 Javascript
webpack源码之loader机制详解
2018/04/06 Javascript
在vue中获取token,并将token写进header的方法
2018/09/26 Javascript
使用FormData实现上传多个文件
2018/12/04 Javascript
JS实现滚动条触底加载更多
2019/09/19 Javascript
在Python程序和Flask框架中使用SQLAlchemy的教程
2016/06/06 Python
windows下python连接oracle数据库
2017/06/07 Python
浅谈python中的__init__、__new__和__call__方法
2017/07/18 Python
基于python3 类的属性、方法、封装、继承实例讲解
2017/09/19 Python
python微信跳一跳系列之棋子定位颜色识别
2018/02/26 Python
Python中偏函数用法示例
2018/06/07 Python
Django 限制用户访问频率的中间件的实现
2018/08/23 Python
python环境路径配置以及命令行运行脚本
2019/04/02 Python
python tkinter窗口最大化的实现
2019/07/15 Python
django数据关系一对多、多对多模型、自关联的建立
2019/07/24 Python
Django中自定义admin Xadmin的实现代码
2019/08/09 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
2020/06/24 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
2020/06/28 Python
激光脱毛、蓝光和护肤:Tria Beauty
2019/03/28 全球购物
《要下雨了》教学反思
2014/02/17 职场文书
工作会议方案
2014/05/21 职场文书
培训督导岗位职责
2015/04/10 职场文书
互联网创业商业模式以及赚钱法则有哪些?
2019/10/12 职场文书
《废话连篇——致新手》——chinapizza
2022/04/05 无线电