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 处理TXT文件(打开/关闭/检查/读取)
May 13 PHP
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
Jun 03 PHP
linux环境apache多端口配置虚拟主机的方法深入介绍
Jun 09 PHP
解析数组非数字键名引号的必要性
Aug 09 PHP
php二维数组排序详解
Nov 06 PHP
php获取文件内容最后一行示例
Jan 09 PHP
PHP之uniqid()函数用法
Nov 03 PHP
PHP把MSSQL数据导入到MYSQL的方法
Dec 27 PHP
带你了解PHP7 性能翻倍的关键
Nov 19 PHP
php使用json_decode后数字对象转换成了科学计数法的解决方法
Feb 20 PHP
php + WebUploader实现图片批量上传功能
May 06 PHP
解决laravel-admin 自己新建页面里 js 需要刷新一次的问题
Oct 03 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
不用数据库的多用户文件自由上传投票系统(1)
2006/10/09 PHP
PHP之uniqid()函数用法
2014/11/03 PHP
Zend Framework基于Command命令行建立ZF项目的方法
2017/02/18 PHP
详解php中生成标准uuid(guid)的方法
2019/04/28 PHP
从零开始学习jQuery (三) 管理jQuery包装集
2011/02/23 Javascript
Prototype源码浅析 Number部分
2012/01/16 Javascript
JS实现多物体缓冲运动实例代码
2013/11/29 Javascript
jQuery实现的多选框多级联动插件
2014/05/02 Javascript
纯javascript移动优先的幻灯片效果
2015/11/02 Javascript
JavaScript数组的栈方法与队列方法详解
2016/05/26 Javascript
js前端面试题及答案整理(一)
2016/08/26 Javascript
jQuery实现导航滚动到指定内容效果完整实例【附demo源码下载】
2016/09/20 Javascript
JS中正则表达式要注意lastIndex属性
2017/08/08 Javascript
实例详解vue.js浅度监听和深度监听及watch用法
2018/08/16 Javascript
Python语言编写电脑时间自动同步小工具
2013/03/08 Python
Python中MySQLdb和torndb模块对MySQL的断连问题处理
2015/11/09 Python
浅谈python 四种数值类型(int,long,float,complex)
2016/06/08 Python
在Python中调用Ping命令,批量IP的方法
2019/01/26 Python
Python 实现域名解析为ip的方法
2019/02/14 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
2019/10/24 Python
.img/.hdr格式转.nii格式的操作
2020/07/01 Python
Python 使用生成器代替线程的方法
2020/08/04 Python
python3.9.1环境安装的方法(图文)
2021/02/02 Python
CSS3中动画属性transform、transition和animation属性的区别
2016/09/25 HTML / CSS
浅析HTML5中header标签的用法
2016/06/24 HTML / CSS
英国优质家居用品网上品牌:URBANARA
2018/06/01 全球购物
西班牙香水和化妆品连锁店:Druni
2019/05/05 全球购物
亚洲航空公司官方网站:AirAsia
2019/11/25 全球购物
家具公司总经理岗位职责
2014/07/08 职场文书
村党的群众路线教育实践活动工作总结
2014/10/25 职场文书
2014年班干部工作总结
2014/11/25 职场文书
银行招聘自荐信
2015/03/06 职场文书
实习推荐信格式模板
2015/03/27 职场文书
2015年三年级班主任工作总结
2015/05/21 职场文书
2016年寒假学习心得体会
2015/10/09 职场文书
2016年幼儿园万圣节活动总结
2016/04/05 职场文书