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 新手入门教程
Aug 03 PHP
PHP 创建标签云函数代码
May 26 PHP
超小PHP小马小结(方便查找后门的朋友)
May 05 PHP
php function用法如何递归及return和echo区别
Mar 07 PHP
php简单实现批量上传图片的方法
May 09 PHP
PHP使用内置函数生成图片的方法详解
May 09 PHP
Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法
Jul 02 PHP
利用php_imagick实现复古效果的方法
Oct 18 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
Dec 19 PHP
iis6手工创建网站后无法运行php脚本的解决方法
Jun 08 PHP
PHP Swoole异步Redis客户端实现方法示例
Oct 24 PHP
TP5框架页面跳转样式操作示例
Apr 05 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
人尽可用的Windows技巧小贴士之下篇
2007/03/22 PHP
使用eAccelerator加密PHP程序
2008/10/03 PHP
Windows下XDebug 手工配置与使用说明
2010/07/11 PHP
jQuery EasyUI API 中文文档 - DateBox日期框
2011/10/15 PHP
ASP和PHP实现生成网站快捷方式并下载到桌面的方法
2014/05/08 PHP
PHP模拟QQ登录的方法
2015/07/29 PHP
PHP时间处理类操作示例
2018/09/05 PHP
laravel 解决paginate查询多个字段报错的问题
2019/10/22 PHP
js中arguments,caller,callee,apply的用法小结
2014/01/28 Javascript
JavaScript检查子字符串是否在字符串中的方法
2016/02/03 Javascript
JS实现获取图片大小和预览的方法完整实例【兼容IE和其它浏览器】
2017/04/24 Javascript
JavaScript输入分钟、秒倒计时技巧总结(附代码)
2017/08/17 Javascript
JS中图片压缩的方法小结
2017/11/14 Javascript
JavaScript原生实现观察者模式的示例
2017/12/15 Javascript
详解vuex持久化插件解决浏览器刷新数据消失问题
2019/04/15 Javascript
vue使用代理解决请求跨域问题详解
2019/07/24 Javascript
Vue+Node实现商品列表的分页、排序、筛选,添加购物车功能详解
2019/12/07 Javascript
vue实现在线学生录入系统
2020/05/30 Javascript
jQuery 移除事件的方法
2020/06/20 jQuery
一篇文章带你从零快速上手Rollup
2020/09/07 Javascript
Python 爬虫学习笔记之多线程爬虫
2016/09/21 Python
Python爬虫之模拟知乎登录的方法教程
2017/05/25 Python
Django中利用filter与simple_tag为前端自定义函数的实现方法
2017/06/15 Python
python处理按钮消息的实例详解
2017/07/11 Python
Python数据结构与算法之图结构(Graph)实例分析
2017/09/05 Python
Python安装lz4-0.10.1遇到的坑
2018/05/20 Python
Python 删除连续出现的指定字符的实例
2018/06/29 Python
Python之inspect模块实现获取加载模块路径的方法
2018/10/16 Python
利用python循环创建多个文件的方法
2018/10/25 Python
python中单下划线(_)和双下划线(__)的特殊用法
2019/08/29 Python
Pytorch中的variable, tensor与numpy相互转化的方法
2019/10/10 Python
python 实现单通道转3通道
2019/12/03 Python
布隆过滤器的概述及Python实现方法
2019/12/08 Python
如何基于python操作json文件获取内容
2019/12/24 Python
CSS3 真的会替代 SCSS 吗
2021/03/09 HTML / CSS
浅谈Python numpy创建空数组的问题
2021/05/25 Python