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连接SQLSERVER 注意事项(附dll文件下载)
Jun 28 PHP
解析thinkphp中的导入文件标签
Jun 20 PHP
php模仿asp Application对象在线人数统计实现方法
Jan 04 PHP
php打造智能化的柱状图程序,用于报表等
Jun 19 PHP
WordPress中用于获取搜索表单的PHP函数使用解析
Jan 05 PHP
CodeIgniter视图使用注意事项
Jan 20 PHP
WordPress过滤垃圾评论的几种主要方法小结
Jul 11 PHP
php 使用html5实现多文件上传实例
Oct 24 PHP
PHP使用PDO访问oracle数据库的步骤详解
Sep 29 PHP
PHP ADODB实现事务处理功能示例
May 25 PHP
PHP时间戳和日期相互转换操作实例小结
Dec 18 PHP
PHP如何使用JWT做Api接口身份认证的实现
Feb 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
php实现mysql数据库分表分段备份
2015/06/18 PHP
Django 中 cookie的使用
2017/08/17 PHP
php中访问修饰符的知识点总结
2019/01/27 PHP
php+websocket 实现的聊天室功能详解
2020/05/27 PHP
如何实现JS函数的重载
2006/09/22 Javascript
jQuery的slideToggle方法实例
2013/05/07 Javascript
Jquery封装tab自动切换效果的具体实现
2013/07/13 Javascript
使用jquery修改表单的提交地址基本思路
2014/06/04 Javascript
JavaScript中this详解
2015/09/01 Javascript
js省市联动效果完整实例代码
2015/12/09 Javascript
阿里巴巴技术文章分享 Javascript继承机制的实现
2016/01/14 Javascript
React.js中常用的ES6写法总结(推荐)
2017/05/09 Javascript
easyui-datagrid开发实践(总结)
2017/08/02 Javascript
使用cropper.js裁剪头像的实例代码
2017/09/29 Javascript
Laravel整合Bootstrap 4的完整方案(推荐)
2018/01/25 Javascript
JQuery animate动画应用示例
2019/05/14 jQuery
vue实现验证用户名是否可用
2021/01/20 Vue.js
[00:09]DOTA2新版本PA至宝特效动作展示
2014/11/19 DOTA
[03:48]DOTA2完美大师赛主赛事第二日精彩集锦
2017/11/24 DOTA
[03:40]DOTA2抗疫特别篇《英雄年代》
2020/02/28 DOTA
学习python处理python编码问题
2011/03/13 Python
给Python IDLE加上自动补全和历史功能
2014/11/30 Python
用Python实现协同过滤的教程
2015/04/08 Python
基于Python中numpy数组的合并实例讲解
2018/04/04 Python
python读取TXT每行,并存到LIST中的方法
2018/10/26 Python
Python实现八皇后问题示例代码
2018/12/09 Python
python批量从es取数据的方法(文档数超过10000)
2018/12/27 Python
python之线程通过信号pyqtSignal刷新ui的方法
2019/01/11 Python
Python QQBot库的QQ聊天机器人
2019/06/19 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
2019/09/25 Python
Python 模拟生成动态产生验证码图片的方法
2020/02/01 Python
SAZAC的动物连体衣和动物睡衣:Kigurumi Shop
2020/03/14 全球购物
北京泡泡网网络有限公司.net面试题
2012/07/17 面试题
大学本科毕业生的自我鉴定范文
2013/11/19 职场文书
大学生职业生涯规划书模板
2014/01/18 职场文书
javascript数组includes、reduce的基本使用
2021/07/02 Javascript