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 遍历数据表数据并列表横向排列的代码
Sep 05 PHP
php 代码优化之经典示例
Mar 24 PHP
JS与PHP向函数传递可变参数的区别实例代码
May 18 PHP
ThinkPHP使用心得分享-上传类UploadFile的使用
May 15 PHP
PHP中使用CURL模拟登录并获取数据实例
Jul 01 PHP
php实现字符串反转输出的方法
Mar 14 PHP
PHP安装threads多线程扩展基础教程
Nov 17 PHP
浅谈PHP检查数组中是否存在某个值 in_array 函数
Jun 13 PHP
php执行多个存储过程的方法【基于thinkPHP】
Nov 08 PHP
wordpress网站转移到本地运行测试的方法
Mar 15 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
Feb 06 PHP
Laravel基础-关于引入公共文件的两种方式
Oct 18 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 4.2书写安全的脚本
2006/10/09 PHP
Php Mssql操作简单封装支持存储过程
2009/12/11 PHP
php解决约瑟夫环示例
2014/04/09 PHP
php中静态类与静态变量用法的区别分析
2015/01/15 PHP
深入理解php printf() 输出格式化的字符串
2016/05/23 PHP
php求数组全排列,元素所有组合的方法总结
2017/03/14 PHP
showModalDialog 和 showModelessDialog
2007/01/22 Javascript
理清apply(),call()的区别和关系
2011/08/14 Javascript
JQuery中SetTimeOut传参问题探讨
2013/05/10 Javascript
表单序列化与jq中的serialize使用示例
2014/02/21 Javascript
js实现头像图片切割缩放及无刷新上传图片的方法
2015/07/17 Javascript
js仿苹果iwatch外观的计时器代码分享
2015/08/26 Javascript
js实现具有高亮显示效果的多级菜单代码
2015/09/01 Javascript
js无提示关闭浏览器窗口的两种方法分析
2016/11/06 Javascript
vue写一个组件
2018/04/09 Javascript
jQuery AJAX 方法success()后台传来的4种数据详解
2018/08/08 jQuery
解决vue组件props传值对象获取不到的问题
2019/06/06 Javascript
关于vue组件事件属性穿透详解
2019/10/28 Javascript
JavaScript自定义超时API代码实例
2020/04/30 Javascript
JavaScript中layim之整合右键菜单的示例代码
2021/02/06 Javascript
[03:05]《我与DAC》之xiao8:DAC与BG
2018/03/27 DOTA
python中的reduce内建函数使用方法指南
2014/08/31 Python
Python实现模拟分割大文件及多线程处理的方法
2017/10/10 Python
解决python中使用plot画图,图不显示的问题
2018/07/04 Python
Flask框架通过Flask_login实现用户登录功能示例
2018/07/17 Python
PyCharm 2019.3发布增加了新功能一览
2019/12/08 Python
pytorch获取模型某一层参数名及参数值方式
2019/12/30 Python
Python网络爬虫四大选择器用法原理总结
2020/06/01 Python
python 实现单例模式的5种方法
2020/09/23 Python
python 制作网站筛选工具(附源码)
2021/01/21 Python
计算机专业毕业生的自我评价
2013/11/18 职场文书
写好自荐信需做到的5要点
2014/03/07 职场文书
学校节能宣传周活动总结
2014/07/09 职场文书
2014年幼儿园保育工作总结
2014/12/02 职场文书
2015年基层党建工作总结
2015/05/14 职场文书
如何用JavaScript实现一个数组惰性求值库
2021/05/05 Javascript